슬라이드 1

Size: px
Start display at page:

Download "슬라이드 1"

Transcription

1 1. 개요 2. Data Source 3. Data Access 4. ORM 5. Transaction - 1 -

2 1. 개요 - 실행환경데이터처리레이어 (1/3) 데이터베이스에대한연결및영속성처리, 선언적인트랜잭션관리를제공하는 Layer 임 전자정부개발프레임워크실행환경 서비스그룹 Presentation Layer 설명 업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면구성, 사용자입력정보검증등의기능을제공함 Layer Presentation Layer Logic Business Layer Persistence Integration Layer Business Logic Layer 업무프로그램의업무로직을담당하는 Layer 로서, 업무흐름제어, 에러처리등의기능을제공함 Persistence Layer 데이터베이스에대한연결및영속성처리, 선언적인트랜잭션관리를제공하는 Layer 임 Foundation Layer ( 공통기반레이어 ) Integration Layer 타시스템과의연동기능을제공하는 Layer 임 환경 서비스그룹 Foundation Layer ( 공통기반레이어 ) 실행환경의각 Layer 에서공통적으로사용하는공통기능을제공함 - 2 -

3 1. 개요 - 실행환경데이터처리레이어 (2/3) 데이터처리레이어는 DataSource, Data Access 등총 4 개의서비스를제공함 실행환경 화면처리레이어 업무처리레이어 데이터처리레이어 연계통합레이어 MVC Internationalization Process Control DataSource Data Access Naming Service Ajax Support Security Exception Handling ORM TBD Transaction Integration Service UI Adaptor Web Service 공통기반레이어 AOP Cache Compress/Decompress Encryption/Decryption Excel File Handling File Upload/Download FTP Server Security ID Generation IoC Container Logging Mail Marshalling/Unmarshalling Object Pooling Property Resource Scheduling String Util XML Manipulation 실행환경서비스그룹서비스 - 3 -

4 1. 개요 - 실행환경데이터처리레이어 (3/3) 데이터처리레이어는 Spring MVC, ibatis 등총 3 종의오픈소스 SW 를사용하고있음 서비스 오픈소스 SW 버전 DataSource Spring 2.5 Data Access ibatis SQL Maps 2.3 ORM Hibernate 3.2 Transaction Spring

5 1. 개요 - Hibernate(1/2) Hibernate 는자바객체와관계형데이터모델간의매핑을위한도구이며쿼리서비스를지원하는 강력한고성능의퍼시스턴스프레임워크임 관계형데이터모델에대한객체지향관점을제공하는객체 / 관계매핑 (Object Relational Mapping) 프레임워크 Gavin King (JBoss, 현재 Red Hat) 을중심으로한소프트웨어개발팀에의해개발됨. * Open Source Catalogue 2007, Optaros (Hibernate 3.2 기준 ) - 5 -

6 1. 개요 - Hibernate(2/2) Hibernate 는 J2EE 표준인 JNDI, JDBC, JTA 를기반으로객체관계형매핑 (OR Mapping), 데이터 베이스연결및트랜잭션관리기능등을제공함 - 6 -

7 1. 개요 - ibatis(1/2) ibatis 는단순성이라는사상을강조한퍼시스턴스프레임워크로, SQL 맵을이용하여반복적이고복 잡한 DB 작업코드를최소화함 단순성이라는사상을강조하여, XML 을이용하여 Stored Procedure 혹은 SQL 문과자바객체간의매핑을지원 2001 년 Clinton Begin (Apache 소프트웨어재단 ) 에의해개발된퍼시스턴스프레임워크 * Performance Comparison of Persistence Frameworks, Sabu M. Thampi, Ashwin a K. (2007) - 7 -

8 1. 개요 - ibatis(2/2) ibatis 는소스코드외부에정의된 SqlMap.xml 파일정보를바탕으로생성된 Mapped Statement 를 이용하여 SQL 과객체간의매핑기능을제공함 * ibatis SQL Maps 개발자가이드 Version

9 2. Data Source - 개요 서비스개요 데이터베이스에대한연결을제공하는서비스이다. 다양한방식의데이터베이스연결을제공하고, 이에대한 추상화계층을제공함으로써, 업무로직과데이터베이스연결방식간의종속성을배제한다. 주요기능 JDBC DataSource JDBC driver 를이용하여 Database Connection 을생성한다. 1. Configuration <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="${driver" /> <property name="url" value="${dburl" /> <property name="username" value="${username" /> <property name="password" value="${password" /> </bean> driverclassname : JDBC driver class name 설정 url : DataBase 접근하기위한 JDBC URL username : DataBase 접근하기위한사용자명 password : DataBase 접근하기위한암호 - 9 -

10 2. Data Source - 설명 (1/8) 2. Sample = "datasource") DataSource = "jdbcproperties") Properties jdbcproperties; boolean ishsql = true; DataSource public void testjdbcdatasource() throws Exception { assertnotnull(datasource); assertequals("org.springframework.jdbc.datasource.drivermanagerdatasource", datasource.getclass().getname()); Connection con = null; Statement stmt = null; ResultSet rs = null; try { con = datasource.getconnection(); assertnotnull(con); stmt = con.createstatement(); rs = stmt.executequery("select 'x' as x from dual"); while (rs.next()) { assertequals("x", rs.getstring(1));

11 2. Data Source - 설명 (2/8) DBCP DataSource JDBC driver 를이용한 Database Connection 구현체이다.Commons DBCP 라불리는 Jakarta 의 Database Connection Pool 이 다. 1. Configuration <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="${driver" /> <property name="url" value="${dburl" /> <property name="username" value="${username" /> <property name="password" value="${password" /> <property name="defaultautocommit" value="false" /> <property name="poolpreparedstatements" value="true" /> </bean> driverclassname : jdbc driver class name 설정 url : DataBase url 설정 username : DataBase 접근하기위한사용자명 password : DataBase 접근하기위한암호 defaultautocommit : DataBase 로부터리턴된 connection 에대한 auto-commit 여부를설정 poolpreparedstatements : PreparedStatement 사용여부

12 2. Data Source - 설명 (3/8) 2. Sample = "datasource") DataSource = "jdbcproperties") Properties jdbcproperties; boolean ishsql = public void testdbcpdatasource() throws Exception { assertnotnull(datasource); assertequals("org.apache.commons.dbcp.basicdatasource", datasource.getclass().getname()); Connection con = null; Statement stmt = null; ResultSet rs = null; try { con = datasource.getconnection(); assertnotnull(con); stmt = con.createstatement(); rs = stmt.executequery("select 'x' as x from dual"); while (rs.next()) { assertequals("x", rs.getstring(1));

13 2. Data Source - 설명 (4/8) C3P0 DataSource DBCP DataSource의메모리누수문제가한창불거져문제가되었을즈음대안으로제시되어지금은가장많이선호하는오픈소스 DataSource 이다. 1. Configuration <bean id="datasource" class="com.mchange.v2.c3p0.combopooleddatasource" destroy-method="close"> <property name="driverclass" value="${driver" /> driverclass : jdbc driver <property name="jdbcurl" value="${dburl" /> jdbcurl : DB URL <property name="user" value="${username" /> user : 사용자명 <property name="password" value="${password" /> password : 암호 <property name="initialpoolsize" value="3" /> initalpoolsize : 풀초기값 <property name="minpoolsize" value="3" /> maxpoolsize : 풀최소값 <property name="maxpoolsize" value="50" /> idleconnectiontestperiod : idle상태 <property name="idleconnectiontestperiod" value="200"/> 점검시간 <property name="acquireincrement" value="1" /> acquireincrement : 증가값 <property name="maxstatements" value="0" /> maxstatements : 캐쉬유지여부 <property name="numhelperthreads" value="3" /> numhelperthreads : HelperThread </bean> 개수

14 2. Data Source - 설명 (5/8) 2. Sample = "datasource") DataSource = "jdbcproperties") Properties public void testc3p0datasource() throws Exception { assertnotnull(datasource); assertequals("com.mchange.v2.c3p0.combopooleddatasource", datasource.getclass().getname()); Connection con = null; Statement stmt = null; ResultSet rs = null; try { con = datasource.getconnection(); assertnotnull(con); stmt = con.createstatement(); rs = stmt.executequery("select 'x' as x from dual"); while (rs.next()) { assertequals("x", rs.getstring(1));

15 2. Data Source - 설명 (6/8) JNDI DataSource JNDIDataSource는 JNDI Lookup을이용하여 Database Connection을생성한다. JNDIDataSource는대부분 Enterprise application server에서제공되는 JNDI tree로부터 DataSource를가져온다. 1. Configuration <jee:jndi-lookup id="datasource" jndi-name="${jndiname" resource-ref="true"> <jee:environment> java.naming.factory.initial=${jeus.java.naming.factory.initial java.naming.provider.url=${jeus.java.naming.provider.url </jee:environment> </jee:jndi-lookup> JEUS 설정 WEBLOGIC 설정 <util:properties id="jndiproperties" location="classpath:/meta-inf/spring/jndi.properties" /> <jee:jndi-lookup id="datasource" jndi-name="${jndiname" resource-ref="true" environmentref="jndiproperties" />

16 2. Data Source - 설명 (7/8) 2. Sample = "datasource") DataSource = "jdbcproperties") Properties public void testjndijeusdatasource() throws Exception { assertnotnull(datasource); assertequals("jeus.jdbc.connectionpool.datasourcewrapper", datasource.getclass().getname()); Connection con = null; Statement stmt = null; ResultSet rs = null; try { con = datasource.getconnection(); assertnotnull(con); stmt = con.createstatement(); rs = stmt.executequery("select 'x' as x from dual"); while (rs.next()) { assertequals("x", rs.getstring(1));... Jues DataSource 설정

17 2. Data Source - 설명 (8/8) 2. Sample = "datasource") DataSource = "jdbcproperties") Properties WebLogic DataSource 설정 public void testjndidatasource() throws Exception { assertnotnull(datasource); assertequals("weblogic.jdbc.common.internal.rmidatasource_922_wlstub ", datasource.getclass().getname()); Connection con = null; Statement stmt = null; ResultSet rs = null; try { con = datasource.getconnection(); assertnotnull(con); stmt = con.createstatement(); rs = stmt.executequery("select 'x' as x from dual"); while (rs.next()) { assertequals("x", rs.getstring(1));

18 2. Data Source - 참고자료 Commons DBCP C3P

19 3. Data Access 개요 (1/2) 서비스개요 JDBC 를사용한 Data Access 를추상화하여간편하고쉽게사용할수있는 Data Mapper framework 인 ibatis 를 Data Access 기능의기반오픈소스로채택 ibatis 를사용하면관계형데이터베이스에엑세스하기위해필요한일련의자바코드사용을현저히줄일수있으며간단한 XML 기술을사용하여 SQL 문을 JavaBeans ( 또는 Map) 에간편하게매핑할수있음 Data Access 서비스는다양한데이터베이스솔루션및데이터베이스접근기술에일관된방식으로대응하기위한서비스 데이터를조회하거나입력, 수정, 삭제하는기능을수행하는메커니즘을단순화함 데이터베이스솔루션이나접근기술이변경될경우에도데이터를다루는시스템영역의변경을최소화할수있도록데이터베이스와의접점을추상화함 추상화된데이터접근방식을템플릿 (Template) 으로제공함으로써, 개발자들의업무효율을향상시킴

20 3. Data Access 개요 (2/2) 주요기능 추상화된접근방식제공 JDBC 데이터억세스에대한추상화된접근방식으로간편하고쉬운 API, 자원연결 / 해제, 공통에러처리등을통합지원함 코드로부터 SQL 분리지원 소스코드로부터 SQL 문을분리하여별도의 repository( 의미있는문법의 XML) 에유지하고이에대한빠른참조구조를내부적으로구현하여관리 / 유지보수 / 튜닝의용이성을보장함. 쿼리실행의입 / 출력객체바인딩 / 맵핑지원 쿼리문의입력파라메터에대한바인딩과실행결과 resultset 의가공 ( 맵핑 ) 처리시객체 (VO, Map, List) 수준의자동화를지원함 Dynamic SQL 지원 코드작성, API 직접사용없이입력조건에따른동적인쿼리문변경을지원함 다양한 DB 처리지원 기본질의외에 Batch SQL, Paging, Callable Statement, BLOB/CLOB 등다양한 DB 처리를지원함

21 3. Data Access 설명 (1/20) Data Access 서비스 ibatis Data Mapper API 는 XML을사용하여 SQL 문에대한객체맵핑을간편하게기술할수있도록지원 자바빈즈객체와 Map 구현체, 다양한원시래퍼타입 (String, Integer..) 등을 PreparedStatement 의파라메터나 ResultSet에대한결과객체로쉽게맵핑해줌

22 3. Data Access 설명 (2/20) 세부사항설명 ibatis Configuration ibatis 의메인설정파일인 SQL Map XML Configuration 파일 ( 이하 sql-map-config.xml 설정파일 ) 작성과상세한옵션설정 Data Type 데이터베이스를이용하여데이터를저장하고조회할때 Java 어플리케이션에서의 Type 과 DBMS 에서지원하는관련매핑 jdbc Type 의정확한사용이필요 parametermap 해당요소로 SQL 문외부에정의한입력객체의속성에대한 name 및 javatype, jdbctype 을비롯한옵션을설정할수있는매핑요소 Inline parameters prepared statement 에대한바인드변수매핑처리를위한 parametermap 요소 (SQL 문외부에정의한입력객체 property name 및 javatype, jdbctype 을비롯한옵션을설정매핑요소 ) 와동일한기능을처리하는간편한방법 resultmap resultmap 은 SQL 문외부에정의한매핑요소로, result set 으로부터어떻게데이터를뽑아낼지, 어떤칼럼을어떤 property 로매핑할지에대한상세한제어를가능케해줌 Dynamic SQL SQL 문의동적인변경에대한상대적으로유연한방법을제공하는 ibatis 의 Dynamic 요소

23 3. Data Access 설명 (3/20) 세부사항설명 ( ibatis Configuration ) (1/5) sql-map-config.xml ( 1/2 ) SqlMapClient 설정관련상세내역을제어할수있는메인설정파일로주로 transaction 관리관련설정및다양한옵션설정, Sql Mapping 파일들에대한 path 설정등을포함한다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmapconfig PUBLIC "-//ibatis.com//dtd SQL Map Config 2.0//EN" " <sqlmapconfig> <properties resource="meta-inf/spring/jdbc.properties" /> <settings cachemodelsenabled="true" enhancementenabled="true" lazyloadingenabled="true" maxrequests="128" maxsessions="10" maxtransactions="5" usestatementnamespaces="false" defaultstatementtimeout="1" /> <typehandler javatype="java.util.calendar" jdbctype="timestamp" callback="egovframework.rte.psl.dataaccess.typehandler.calendartypehandler" /> <transactionmanager type="jdbc"> <datasource type="dbcp"> <property name="driverclassname" value="${driver" /> <property name="url" value="${dburl" /> <property name="username" value="${username" /> <property name="password" value="${password" /> <!-- OPTIONAL PROPERTIES BELOW -->

24 3. Data Access 설명 (4/20) 세부사항설명 ( ibatis Configuration ) (2/5) sql-map-config.xml ( 2/2 ) <property name="maxactive" value="10" /> <property name="maxidle" value="5" /> <property name="maxwait" value="60000" /> <!-- validation query --> <!--<property name="validationquery" value="select * from DUAL" />--> <property name="logabandoned" value="false" /> <property name="removeabandoned" value="false" /> <property name="removeabandonedtimeout" value="50000" /> <property name="driver.driverspecificproperty" value="somevalue" /> </datasource> </transactionmanager> <sqlmap resource="meta-inf/sqlmap/mappings/testcase-basic.xml" /> <sqlmap../>.. </sqlmapconfig> properties : 표준 java properties (key=value 형태 ) 파일에대한연결을지원하며설정파일내에서 ${key 와같은 properties 형태로외부화해놓은실제의값 ( 여기서는 DB 접속관련 driver, url, id/pw) 을참조할수있다. resource 속성으로 classpath 지정가능, url 속성으로유효한 URL 상에있는자원을지정가능 settings : 이설정파일을통해생성된 SqlMapClient instance 에대하여다양한옵션설정을통해최적화할수있도록지원함. 모든속성은선택사항 (optional) 이다

25 3. Data Access 설명 (5/20) 세부사항설명 ( ibatis Configuration ) (3/5) 속성 설명 Example, Default maxrequests 같은시간대에 SQL 문을실행할수있는 thread 의최대갯수지정. maxrequests= 256, 512 maxsessions 주어진시간에활성화될수있는 session( 또는 client) 수지정. maxsessions= 64, 128 maxtransactions 같은시간대에 SqlMapClient.startTransaction() 에들어갈수있는최대갯수지정. maxtransactions= 16, 32 cachemodelsenabled SqlMapClient 의모든 cachemodel 에대한사용여부를 global 하게지정. lazyloadingenabled SqlMapClient 의모든 lazy loading 에대한사용여부를 global 하게지정. enhancementenabled runtime bytecode enhancement 기술사용여부지정. cachemodelsenabled= true, true (enabled) lazyloadingenabled= true, true (enabled) enhancementenabled= true, false (disabled) usestatementnamespaces defaultstatementtimeout classinfocacheenabled statementcachingenabled mapped statements 에대한참조시 namespace 조합사용여부지정. true 인경우 queryforobject( sqlmapname.statementname ); 과같이사용함. 모든 JDBC 쿼리에대한 timeout 시간 ( 초 ) 지정, 각 statement 의설정으로 override 가능함. 모든 driver 가이설정을지원하는것은아님에유의할것. introspected(java 의 reflection API 에의해내부참조된 ) class 의캐쉬를유지할지에대한설정 prepared statement 의 local cache 를유지할지에대한설정 usestatementnamespaces= false, false (disabled) 지정하지않는경우 timeout 없음 (cf. 각 statement 설정에따라 ) classinfocacheenabled= true, true (enabled) statementcachingenabled= true, true (enabled)

26 3. Data Access 설명 (6/20) 세부사항설명 ( ibatis Configuration ) (4/5) SQL Map XML 파일 (sql 매핑파일 ) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmap PUBLIC "-//ibatis.com//dtd SQL Map 2.0//EN" " 2.dtd"> <sqlmap namespace="dept"> <typealias alias="deptvo" type="egovframework.deptvo" /> <resultmap id="deptresult" class="deptvo"> <result property="deptno" column="dept_no" /> <result property="deptname" column="dept_name" /> <result property="loc" column="loc" /> </resultmap> <insert id="insertdept" parameterclass="deptvo"> insert into DEPT (DEPT_NO, DEPT_NAME, LOC) values (#deptno#, #deptname#, #loc#) </insert> <select id="selectdept" parameterclass="deptvo" resultmap="deptresult"> <![CDATA[ select DEPT_NO, DEPT_NAME, LOC from DEPT where DEPT_NO = #deptno# ]]> </select> </sqlmap>

27 3. Data Access 설명 (7/20) 세부사항설명 ( ibatis Configuration ) (5/5) SQL Map XML 파일 typealias : 현재매핑파일내에서객체에대한간략한 alias 명을지정함. (cf. 매우자주쓰이는 class 의경우 sql-mapconfig.xml 에 global 하게등록하는것이좋음 ) resultmap : DB 칼럼명 (select 문의칼럼 alias) 과결과객체의 attribute 에대한매핑및추가옵션을정의함. insert, select : 각 statement 타입에따른 mapped statement 정의요소예시. 유형에따라 insert/update/delete/select/procedure/statement 요소사용가능 이외에도 parametermap, resultmap 에대한상세정의, cachemodel 설정, sql 문재사용을위한 sql 요소설정이나타날수있다. 각각에대한상세사항은관련가이드를참고

28 3. Data Access 설명 (8/20) 세부사항설명 ( Data Type ) 어플리케이션을작성할때 Data Type 에대한올바른사용과관련처리는매우중요함 데이터베이스를이용하여데이터를저장하고조회할때 Java 어플리케이션에서의 Type 과 DBMS 에서지원하는관련매핑 jdbc Type 의정확한사용이필요함 기본 Data Type 사용방법 ibatis SQL Mapper 프레임워크는 Java 어플리케이션영역의표준 JavaBeans 객체 ( 또는 Map 등 ) 의각 Attribute 에대한 Java Type 과 JDBC 드라이버에서지원하는각 DBMS의테이블칼럼에대한 Data Type 의매핑을기반으로 parameter / result 객체에대한바인딩 / 매핑을처리함 각 javatype 에대한매칭되는 jdbctype 은일반적인 Ansi SQL 을사용한다고하였을때아래에서대략확인할수있음 특정 DBMS 벤더에따라추가적으로지원 / 미지원하는 jdbctype 이다를수있고, 또한같은 jdbctype 을사용한다하더라도타입에따른사용가능한경계값 (boundary max/min value) 은다를수있음

29 3. Data Access 설명 (9/20) 세부사항설명 ( parametermap ) 해당요소로 SQL 문외부에정의한입력객체의속성에대한 name 및 javatype, jdbctype 을비롯한옵션을설정할수있는매핑요소임. JavaBeans 객체 ( 또는 Map 등 ) 에대한 prepared statement 에대한바인드변수매핑을처리할수있음. 유사한기능을처리하는 parameterclass 나 Inline Parameter 에비해많이사용되지않지만더기술적인 (descriptive) parametermap( 예를들어 stored procedure 를위한 ) 이필요함 XML 의일관된사용과순수성을지키고자할때좋은접근법이될수도있음. Dynamic 요소와함께사용될수없고바인드변수의갯수와순서를정확히맞춰야하는불편이있는등일반적으로사용을추천하지않음

30 3. Data Access 설명 (10/20) 세부사항설명 ( Inline Parameters ) prepared statement 에대한바인드변수매핑처리를위한 parametermap 요소 SQL 문외부에정의한입력객체 property name 및 javatype, jdbctype 을비롯한옵션을설정매핑요소와동일한기능을처리하는간편한방법을 Inline Parameters 방법으로제공보통 parameterclass 로명시된입력객체에대해바인드변수영역을간단한 #property# 노테이션으로나타내는 Inline Parameter 방법은기존 parametermap 에서의? 와이의순서를맞춘외부 parametermap 선언으로처리하는방법에비해많이사용되고일반적으로추천하는방법 Dynamic 요소와함께사용될수있고별도의외부매핑정의없이바인드변수처리가필요한위치에해당 property 를직접사용가능하며, 필요한경우 jdbctype 이나 nullvalue 를간단한추가노테이션과같이지정할수있음 (ex. #empname:varchar:blank# ) (ex. #comm,javatype=decimal,jdbctype=numeric,nullvalue=-99999# ),(comma) 로구분된필요한속성 = 값을상세하게기술할수도있음

31 3. Data Access 설명 (11/20) 세부사항설명 ( resultmap ) resultmap 은 SQL 문외부에정의한매핑요소 result set 으로부터어떻게데이터를뽑아낼지, 어떤칼럼을어떤 property로매핑할지에대한상세한제어를가능케해줌. resultmap 은일반적으로가장많이사용되는중요한매핑요소로 resultclass 속성을이용한자동매핑접근법에비교하여칼럼타입의지시, null value 대체값, typehandler 처리, complex property 매핑 ( 다른 JavaBean, Collections 등을포함하는복합객체 ) 등을허용함

32 3. Data Access 설명 (12/20) 세부사항설명 ( Dynamic SQL ) 일반적으로 JDBC API 를사용한코딩에서한번정의한쿼리문을최대한재사용하고자하나단순파라메터변수의값만변경하는것으로해결하기어렵고다양한조건에따라조금씩다른쿼리의실행이필요한경우많은 if~else 조건분기의연결이필요한문제가있음. 1-1 Dynamic SQL mapping xml 파일.. <typealias alias="jobhistvo" type="egovframework.rte.psl.dataaccess.vo.jobhistvo" /> <select id="selectjobhistlistusingdynamicelement" parameterclass="jobhistvo" resultclass="jobhistvo"> <![CDATA[ select EMP_NO as empno, START_DATE as startdate, END_DATE as enddate, JOB as job, SAL as sal, COMM as comm, DEPT_NO as deptno from JOBHIST ]]> <dynamic prepend="where"> <isnotnull property="empno" prepend="and"> EMP_NO = #empno# </isnotnull> </dynamic> order by EMP_NO, START_DATE </select>

33 3. Data Access 설명 (13/20) 세부사항설명 ( Dynamic SQL ) Unary 비교연산 ( 1/2 ) 1-2 Sample Unary 비교연산.. <typealias alias="egovmap" type="egovframework.rte.psl.dataaccess.util.egovmap" /> <select id="selectdynamicunary" parameterclass="map" remapresults="true" resultclass="egovmap"> select <dynamic> <isempty property="testemptystring"> 'empty String' as IS_EMPTY_STRING </isempty> <isnotempty property="testemptystring"> 'not empty String' as IS_EMPTY_STRING </isnotempty>.. <ispropertyavailable prepend=", " property="testproperty"> 'testproperty Available' astest_property_available </ispropertyavailable> <isnotpropertyavailable prepend=", " property="testproperty"> 'testproperty Not Available' as TEST_PROPERTY_AVAILABLE </isnotpropertyavailable> </dynamic> from dual </select>

34 3. Data Access 설명 (14/20) 세부사항설명 ( Dynamic SQL ) Unary 비교연산 ( 2/2 ) Unary 비교연산태그 태그 설명 isempty isnotempty isnull isnotnull ispropertyavailable isnotpropertyavailable Collection, String( 또는 String.valueOf()) 대상속성이 null 이거나 empty( 또는 size() < 1) 인경우 true Collection, String( 또는 String.valueOf()) 대상속성이 not null 이고 not empty( 또는 size() < 1) 인경우 true 대상속성이 null 인경우 true 대상속성이 not null 인경우 true 파라메터객체에대상속성이존재하는경우 true 파라메터객체에대상속성이존재하지않는경우 true Unary 비교연산태그속성 속성 설명 prepend 동적구문앞에추가되는 override 가능한 SQL 영역. property 필수. 파라메터객체의어떤 property 에대한체크인지지정. removefirstprepend open close 첫번째로내포될내용을생성하는태그의 prepend 를제거할지여부 (true/false) 전체결과구문에대한시작문자열 전체결과구문에대한닫는문자열

35 3. Data Access 설명 (15/20) 세부사항설명 ( Dynamic SQL ) Binary 비교연산 ( 1/2 ) 1-3 Sample Binary 비교연산.. <typealias alias="egovmap" type="egovframework.rte.psl.dataaccess.util.egovmap" /> <select id="selectdynamicbinary" parameterclass="map" remapresults="true" resultclass="egovmap"> select <dynamic> <isequal property="teststring" comparevalue="test"> '$teststring$' as TEST_STRING, 'test : equals' as IS_EQUAL </isequal> <isnotequal property="teststring" comparevalue="test"> '$teststring$' as TEST_STRING, 'test : not equals' as IS_EQUAL </isnotequal>.. <islessthan property="testotherstring" prepend=", " compareproperty="teststring"> '''$testotherstring$'' <![CDATA[<]]> ''$teststring$''' as COMPARE_PROPERTY_LESS_THAN </islessthan> </ispropertyavailable> </dynamic> from dual </select>

36 3. Data Access 설명 (16/20) 세부사항설명 ( Dynamic SQL ) Binary 비교연산 ( 2/2 ) Binary 비교연산태그 태그 설명 isequal isnotequal isgreaterequal isgreaterthan islessequal 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값과같은경우 true 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값과다른경우 true 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값보다크거나같은경우 true 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값보다큰경우 true 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값보다작거나같은경우 true islessthan 대상속성이 comparevalue 값또는 compareproperty 로명시한대상속성값보다작은경우 true Binary 비교연산태그속성 속성 설명 prepend 동적구문앞에추가되는 override 가능한 SQL 영역. property 필수. 파라메터객체의어떤 property 에대한비교인지지정. compareproperty 파라메터객체의다른 property 와대상 property 값을비교하고자할경우지정. (comparevalue 가없는경우필수 ) comparevalue 대상 property 와비교될값을지정. (compareproperty 가없는경우필수 ) removefirstprepend open close 첫번째로내포될내용을생성하는태그의 prepend 를제거할지여부 (true/false) 전체결과구문에대한시작문자열 전체결과구문에대한닫는문자열

37 3. Data Access 설명 (17/20) 세부사항설명 ( Dynamic SQL ) ParameterPresent 비교 (1/2) 1-4 Sample ParameterPresent 비교.. <typealias alias="egovmap" type="egovframework.rte.psl.dataaccess.util.egovmap" /> <select id="selectdynamicparameterpresent" parameterclass="map" remapresults="true" resultclass="egovmap"> select <isparameterpresent> 'parameter object exist' as IS_PARAMETER_PRESENT </isparameterpresent> <isnotparameterpresent> 'parameter object not exist' as IS_PARAMETER_PRESENT </isnotparameterpresent> from dual </select>

38 3. Data Access 설명 (18/20) 세부사항설명 ( Dynamic SQL ) ParameterPresent 비교 (2/2) ParameterPresent 비교태그 태그 설명 isparameterpresent isnotparameterpresent 파라메터객체가전달된 (not null) 경우 true 파라메터객체가전달되지않은 (null) 경우 true ParameterPresent 비교테그속성 속성 설명 prepend 동적구문앞에추가되는 override 가능한 SQL 영역. removefirstprepend 필수. 파라메터객체의어떤 property 에대한비교인지지정. open close 전체결과구문에대한시작문자열 전체결과구문에대한닫는문자열

39 3. Data Access 설명 (19/20) 세부사항설명 ( Dynamic SQL ) iterate 연산 ( 1/2 ) 1-5 Sample iterate 연산 <typealias alias="jobhistvo" type="egovframework.rte.psl.dataaccess.vo.jobhistvo" /> <typealias alias="empincludesemplistvo" type="egovframework.rte.psl.dataaccess.vo.empincludesemplistvo" /> <select id="selectjobhistlistusingdynamiciterate" parameterclass="empincludesemplistvo" resultclass="jobhistvo"> <![CDATA[ select EMP_NO as empno, START_DATE as startdate, END_DATE as enddate, JOB as job, SAL as sal, COMM as comm, DEPT_NO as deptno from JOBHIST ]]> <dynamic prepend="where"> <iterate property="emplist" open="emp_no in (" conjunction=", " close=")"> #emplist[].empno# </iterate> </dynamic> order by EMP_NO, START_DATE </select>

40 3. Data Access 설명 (20/20) 세부사항설명 ( Dynamic SQL ) iterate 연산 ( 2/2 ) iterate 연산태그 태그 설명 iterate collection 형태의대상객체에대하여포함하고있는각개별요소만큼반복루프를돌며해당내용을수행함 iterate 연산태그속성 속성 설명 prepend 동적구문앞에추가되는 override 가능한 SQL 영역. property 필수. 파라메터객체의어떤 property 에대한비교인지지정. removefirstprepend open Close conjunction 첫번째로내포될내용을생성하는태그의 prepend 를제거할지여부 (true/false/iterate) 전체결과구문에대한시작문자열전체결과구문에대한닫는문자열각 iteration 사이에적용될문자열. AND, OR 연산자나 ',' 등의구분자필요시유용함

41 3. Data Access - 참고자료 ibatis site ibatis-sqlmaps-2 Developer Guide ibatis-sqlmaps-2 개발자가이드 Spring Framework - Reference Documentation

42 4. ORM - 개요 서비스개요 객체모델과관계형데이터베이스간의매핑기능인 ORM(Object-Relational Mapping) 기능을제공함으로써, SQL이아닌객체을이용한업무로직의작성이가능하도록지원함 주요기능 객체와관계형데이터베이스테이블간의매핑 프레임워크설정정보에저장된 ORM 매핑정보를이용하여객체와관계형데이터베이스테이블간의매핑지원 객체로딩 객체와매핑되는관계형데이터베이스의값을읽어와객체의속성값으로설정함 객체저장 저장하고자하는객체의속성값을객체와매핑되는관계형데이터베이스에저장 다양한연관관계지원 객체와객체간의 1:1, 1:n, n:n 등의다양한연관관계를지원 객체의로딩및저장시, 연관관계를맺고있는객체도로딩및저장지원 Caching 객체에대한 Cache 기능을지원하여성능을향상시킴

43 4. ORM Hibernate 개요 (1/3) Hibernate 란 객체모델링 (Object Oriented Modeling) 과관계형데이터모델링 (Relational Data Modeling) 사이의불일치를 해결해주는 OR Mapping 서비스를지원하는개발프레임워크 Hibernate 특징 (1/2) 특정 DBMS에영향을받지않으므로 DBMS가변경되더라도데이터액세스처리코드에대한변경없이설정정보의변경만으로도동작가능 SQL을작성하고 SQL 실행결과로부터전달하고자하는객체로변경하는코드작성하는시간을감소시킴 필요시 SQL 사용도가능함 기본적으로필요시점에만 DBMS에접근하는 Lazy Loading 전략을채택하고 Cache활용을통해 DBMS에대한접근횟수를줄여나가어플리케이션의성능을향상시킴 별도의 XML 파일로매핑을관리하지않고 Entity Class에최소한의 Annotation으로정의함으로써작업이용이함

44 4. ORM - Hibernate 개요 (1/3) Hibernate 특징 (2/2) Entity Class가일반클래스로정의됨으로써상속이나다양성, 캡슐화같은것들을그대로적용하면서퍼시스턴스오브젝트로사용할수있음 자바표준이므로많은벤더들에서구현체를지원하고개발을편리하게할수있는 JPA툴 (Dali) 을지원함 SQL을이용하여처리하는방식에익숙한개발자가사용하려면학습이필요하고이에따른장벽이존재함

45 4. ORM - Hibernate 개요 (1/3) Hibernate 아키텍처 Entity 어플리케이션실행여부와상관없이물리적으로존재하는데이터들을다룸 데이터처리시 Entity를중심으로하여어플리케이션의데이터와 DBMS 연동함 annotation 기반으로매핑관련사항을 Entity 클래스에서정의할수있어별도의파일없이테이블과의관계를표현할수있음 Persistence.xml 구현체에대한선언및대상엔티티클래스지정구현체별프로퍼티지정등을할수있는설정파일 Conceptual Architecture Application Entity JPA(Hibernate) Persistence.xml JPA(Hibernate) JPA 구현체로의 Hibernate 의요소는 Hibernate Core, Hibernate Annotations, Hibernate EntityManager 로되어있으며 JPA 구성에 필요한 Entity Manager 등구현클래스를포함하고있음 Database

46 4. ORM Hibernate 맛보기예제 (1/4) Entity 클래스작성 네개의 Attribute 와각각의 getter setter 메소드로구성되어있는간단한 Entity Department 가 Entity 클래스임을정의 public class Department implements Serializable { private static final long serialversionuid = Primary Key 정보지정 private String deptid; private String deptname; private Date createdate; private BigDecimal empcount; public String getdeptid() { return deptid; public void setdeptid(string deptid) { this.deptid = deptid;

47 4. ORM Hibernate 맛보기예제 (2/4) persistence.xml 작성 Entity 클래스를가지고 JPA 수행하기위한프로퍼티파일작성 구현체제공클래스정보, 엔티티클래스정보, DB 접속정보, 로깅정보, 테이블자동생성정보등을정의함 <persistence-unit name="persistunit" transaction-type="resource_local"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <class>egovframework.department</class> <exclude-unlisted-classes /> <properties> <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcdriver" /> <property name="hibernate.connection.url" value="jdbc:hsqldb:mem:testdb" /> <property name="hibernate.connection.username" value="sa" /> <property name="hibernate.dialect" value="org.hibernate.dialect.hsqldialect" /> <property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit>

48 4. ORM Hibernate 맛보기예제 (3/4) 테스트클래스작성 (1/2) Department 를사용하여입력, 수정, 조회, public void testdepartment() throws Exception { String modifyname = "Marketing Department"; String deptid = "DEPT-0001"; Department department = makedepartment(deptid); // Entity Manager 생성 emf = Persistence.createEntityManagerFactory("PersistUnit"); em = emf.createentitymanager(); // 입력 em.gettransaction().begin(); em.persist(department); em.gettransaction().commit(); em.gettransaction().begin(); Department departmentafterinsert = em.find(department.class, deptid ); // 입력확인 assertequals("department Name Compare!",department.getDeptName(),departmentAfterInsert.getDeptName());

49 4. ORM Hibernate 맛보기예제 (4/4) 테스트클래스작성 (2/2) Department 를사용하여입력, 수정, 조회, 삭제처리를하는것을테스트케이스로작성하여시험 // 수정 departmentafterinsert.setdeptname(modifyname); em.merge(departmentafterinsert); em.gettransaction().commit(); em.gettransaction().begin(); Department departmentafterupdate = em.find(department.class, deptid ); // 수정확인 assertequals("department Modify Name Compare!",modifyName,departmentAfterUpdate.getDeptName()); // 삭제 em.remove(departmentafterupdate); em.gettransaction().commit(); // 삭제확인 Department departmentafterdelete = em.find(department.class, deptid ); assertnull("department is Deleted!",departmentAfterDelete); em.close();

50 4. ORM Hibernate 설명 (1/20) Entities(1/3) ORM 서비스를구성하는가장기초적인클래스로어플리케이션에서다루고자하는테이블에대응하여구성할 Entity annotation 선언 public class User implements Serializable { Serializable 인터페이스구현 private static final long serialversionuid = L; public User(){ argument Primary Key 선언 private String userid; private String username; public String getusername() { return username; public void setusername(string username) { this.username = username;

51 4. ORM Hibernate 설명 (2/20) 해당클래스가 Entity 클래스임을표시하는것으로클래스선언문위에기재 테이블명과 Entity 명이다를때에는 name public class User 해당 Attribute 가 Key 임을표시하는것으로 Attribute private String 해당 Attribute 와매핑되는컬럼정보를입력하기위한것으로 Attribue 위에기재 컬럼명과 Attribute = "DEPT_NAME", length = 30) private String deptname;

52 4. ORM Hibernate 설명 테이블간관계를구성하기위한것으로정의되는 Attribute 위에기재 각각은 1:1,1:N,N:1,N;N private Set<Role> roles = new 테이블의컬럼과매핑되지않고쓰이는 Attribute 를정의하고자할때 Attribute private String rolename; Entity Status New(transient) : 단순히 Entity 객체가초기화되어있는상태 Managed(persistent) : Entity Manager 에의해 Entity 가관리되는상태 Detached : Entity 객체가더이상 Persistance Context 와연관이없는상태 Removed : Managed 되어있는 Entity 객체가삭제된상태

53 4. ORM Hibernate 설명 (4/20) Entity Operation(1/3) 특정 DB 에데이터를입력, 수정, 조회, 삭제, 배치입력등의작업을수행하는오퍼레이션 입력 EntityManager 의 persist() 메소드를호출하여 DB 에단건의데이터추가 Department department = new Department(); String DepartmentId = "DEPT-0001"; em.persist(department); 수정 EntityManager 의 merge() 메소드호출 특정객체가 Persistent 상태이고, 동일한트랜잭션내에서해당객체의속성값에변경이발생한경우 merge() 메소드를직접 적으로호출하지않아도트랜잭션종료시점에변경여부가체크되어변경사항이 DB 에반영됨 // 2. update a Department information department.setdeptname("purchase Dept"); // 3. 명시적인메소드호출 em.merge(department);

54 4. ORM Hibernate 설명 (5/20) Entity Operation(2/3) 조회 EntityManager 의 find() 메소드를호출하여 DB 에서원하는한건의데이터를조회할수있음 find() 메소드호출시대상이되는 Entity 의 Id 를입력인자로전달해야함 Department result = (Department) em.find(department.class, departmentid); 삭제 EntityManager 의 remove() 메소드사용 삭제할객체가동일한경우 remove() 메소드호출시대상이되는 Entity 를입력인자로전달하여삭제함 // 1. insert a new Department information Department department = adddepartment(); // 2. delete a Department information em.remove(department); 삭제할객체가동일한객체가아닐경우 getreference 메소드를호출하여 Entity 의 Id 에해당하는객체정보를추출하여그정 보를입력인자로해서 remove 를호출하여삭제함 Department department = new Department(); department.setdeptid = "DEPT_1"; // 2. delete a Department information em.remove(em.getreference(department.class, department.getdeptid()));

55 4. ORM Hibernate 설명 (6/20) Entity Operation(3/3) 배치입력 EntityManager의 persist() 메소드를호출하여 DB에입력하고 loop를통해반복적으로수행 OutOfMemoryException 방지를위해서일정한 term을두고 flush(),clear() 을호출하여메모리에있는사항을삭제 public void testmultisave() throws Exception { for (int i = 0; i < 900 ; i++) { Department department = new Department(); String DeptId = "DEPT-000" + i; department.setdeptid(deptid); department.setdeptname("sale" + i); department.setdesc(" 판매부 " + i); em.persist(department); logger.debug("=== DEPT-000"+i+" ==="); // OutOfMemoryException 피하기위해서 if (i!= 0 && i % 9 == 0) { em.flush(); em.clear();

56 4. ORM Hibernate 설명 (7/20) Callback Methods(1/2) 엔티티 Operation 직전직후에비지니스로직체크등의로직을별도분리하여처리하도록지원함 Callback Methods 종류 PrePersist : Persist이전시점에수행 PostPersist : Persist이후시점에수행 PreRemove : Remove이전시점에수행 PostRemove : Remove이후시점에수행 PreUpdate : Merge이전시점에수행 PostUpdate : Merge이후시점에수행 PostLoad : Find 이후시점에수행

57 4. ORM Hibernate 설명 (8/20) Callback Methods(2/2) Callback Methods 정의방식 엔티티클래스에내부정의 EntityListener 를지정하여콜백함수정의 public class protected void validatecreate() throws Exception { if (getsalary() < ) throw new Exception("Insufficient Salary!"); salary 가 이하로설정되어 Update 가실행될경우 Exception 이발생함

58 4. ORM Hibernate 설명 (9/20) Association Mapping(1/5) 두클래스사이의연관관계유형에따라매핑관계를선언함 One To One Mapping One To Many Mapping Many To Many Mapping One To One Mapping 예제 Employee 와 TravelProfile 가각각 OneToOne 이라는 Annotation public class Employee private TravelProfile public class TravelProfile private Employee employee;

59 4. ORM Hibernate 설명 (10/20) Association Mapping(2/5) One To Many Mapping Department:User = 1:N 의관계가있으며그관계에대해서 Department 클래스에서 OneToMany 로표시하고 User 클래스에 서 ManyToOne public class private Set<User> users = new public class private Department department;

60 4. ORM Hibernate 설명 (11/20) Association Mapping(3/5) Collection Type Many관계에서 Collection Type은 Set 이외에도 List, Map를사용할수있음 Set 타입 : java.util.set 타입으로 <set> 을이용하여정의 List 타입 : java.util.list 타입으로 <list> 를이용하여정의 Map 타입 : java.util.map 타입으로 <map> 을이용하여 ( 키, 값 ) 을쌍으로정의 //Set private Set<User> users = new HashSet(0); //List ) private List<User> users = new ArrayList(0); private Map<String,User> users ;

61 4. ORM Hibernate 설명 (12/20) Association Mapping(4/5) 단방향 / 양방향관계속성 1:N( 부모 : 자식 ) 관계지정에있어서자식쪽에서부모에대한참조관계를가지고있느냐없느냐에따라서참조관계가있으면양방향관계, 없으면단방향관계로정의 단방향 / 양방향예제 // public class private Set<User> users = new public class private String deptid; // public class private Set<User> users = new public class private Department department;

62 4. ORM Hibernate 설명 (13/20) Association Mapping(5/5) Many To Many Mapping Role:User = M:N 의관계가있다면그관계에대해서 Role 클래스에서 ManyToMany 로표시하고 User 클래스에서 ManyToMany 로표시하여관계를나타내면서 User 클래스에서관계를위한별도의테이블에대한정의를함 ROLE 과 USER 를연결하는관계테이블로 AUTHORITY public class private Set<User> users = new public joincolumns=@joincolumn(name="user_id"), inversejoincolumns=@joincolumn(name="role_id")) private Set<Role> roles = new HashSet(0);

63 4. ORM Hibernate 설명 (14/20) Spring Integration(1/7) Spring 에서는 JPA 기반에서 DAO 클래스를쉽게구현할수있도록하기위해 JdbcTemplate, HibernateTemplate 등처럼 JpaTemplate 클래스를제공함 JPA 에서정의한 Entity Manager 의 Method 를직접이용하는방식도제공함 기본설정 persistence.xml 설정 (persisthsqlmemdb.xml 파일 ) <persistence-unit name="hsqlmunit" transaction-type="resource_local"> // 구현체는 Hibernate <provider>org.hibernate.ejb.hibernatepersistence</provider> // Entity Class List <class>egovframework.sample.model.bidirection.user</class> <class>egovframework.sample.model.bidirection.role</class> <class>egovframework.sample.model.bidirection.department</class> <exclude-unlisted-classes/> <properties> // DBMS 별다른설정여기는 HSQL 설정. <property name="hibernate.dialect" value="org.hibernate.dialect.hsqldialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> </properties> </persistence-unit>

64 4. ORM Hibernate 설명 (15/20) Spring Integration(2/7) 기본설정 Application Context 설정 (1/2) // 1.Transation Manager 설정 <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory" /> </bean> // 2.Entity Manager Factory 설정 <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="persistenceunitname" value="hsqlmunit" /> <property name="persistencexmllocation" value="classpath:meta-inf/persisthsqlmemdb.xml" /> <property name="datasource" ref="datasource" /> </bean> // 3.DataSource 설정 <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="net.sf.log4jdbc.driverspy" /> <property name="url" value="jdbc:log4jdbc:hsqldb:mem:testdb" /> <property name="username" value="sa" /> <property name="password" value="" /> <property name="defaultautocommit" value="false" /> </bean>

65 4. ORM Hibernate 설명 (16/20) Spring Integration(3/7) 기본설정 Application Context 설정 (2/2) // 4.JPA Annotation 사용설정 <bean class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor" /> // 5.Annotation 사용설정 <context:component-scan base-package="egovframework" /> // 6.Annotation 기반의 Transaction 활성화설정 <tx:annotation-driven />

66 4. ORM Hibernate 설명 (17/20) Spring Integration(4/7) JpaTemplate 이용 (2/2) Spring 에서정의한 JpaDaoSupport 를상속받아 getjpatemplate() 를통해서 Entity Method 등을호출작업할수있음 public class UserDAO extends JpaDaoSupport { // Application Context 에서설정한 Entity Manager Factory 명을지정하여부모의 EntityManagerFactory public void setemf(entitymanagerfactory entitymanagerfactory) { super.setentitymanagerfactory(entitymanagerfactory); // gettemplate() 에의한입력 public void createuser(user user) throws Exception { this.getjpatemplate().persist(user); // gettemplate() 에의한조회 public User finduser(string userid) throws Exception { return (User) this.getjpatemplate().find(user.class, userid); // gettemplate() 에의한삭제 public void removeuser(user user) throws Exception { this.getjpatemplate().remove(this.getjpatemplate().getreference(user.class, user.getuserid()));

67 4. ORM Hibernate 설명 (18/20) Spring Integration(5/7) JpaTemplate 이용 (2/2) Entity public class User implements Serializable { private static final long serialversionuid = "USER_ID", length=10) private String = "USER_NAME", length=20) private String private String password;

68 4. ORM Hibernate 설명 (19/20) Spring Integration(6/7) Plain JPA 이용 (1/2) JPA 에서정의한 Entity Manager 의 Entity Method 를호출작업할수있음 Entity Manager 를통해작업함으로써 Spring 환경하에서 Spring 에대한의존성을최소화할수있음 public class RoleDAO { // Application Context 설정의 4.JPA Annotation 사용설정에의해서정의가능한것으로 Annotation 기반으로 Entity Manager private EntityManager em; // EntityManager 를통한입력 public void createrole(role role) throws Exception { em.persist(role); // EntityManager 를통한조회 public Role findrole(string roleid) throws Exception { return (Role) em.find(role.class, roleid); // EntityManager 를통한삭제 public void removerole(role role) throws Exception { em.remove(em.getreference(role.class, role.getroleid())); // EntityManager 를통한수정 public void updaterole(role role) throws Exception { em.merge(role);

69 4. ORM Hibernate 설명 (20/20) Spring Integration(7/7) Plain JPA 이용 (2/2) Entity public class Role implements Serializable { private static final long serialversionuid = "ROLE_ID", length=10) private String = "ROLE_NAME", length=20) private String = "DESC", length=50) private String desc;

70 4. ORM - 참고자료 Hibernate 공식사이트 Spring JPA

71 5. Transaction 개요 서비스개요 트랜잭션서비스는 Spring 트랜잭션서비스를채택하여가이드한다. 트랜잭션서비스에는여러가지가있지만여기서는 DataSource Transaction Service, JTA Transaction Service, JPA Transaction Service에대해서설명하고트랜잭션활용에대해서는설정및 Annotation을통해활용할수있는 Declaration Transaction Management와프로그램에서직접 API를호출하여쓸수있도록하는 Programmatic Transaction Management 두가지에대해서설명한다

72 5. Transaction 설명 (1/12) Declarative Transaction Management 코드에서직접적으로 Transaction 처리하지않고, 선언적으로 Transaction을관리할수있다. Annotation을이용한 Transaction 관리, XML 정의를이용한 Transaction 관리를지원한다. Configuration <tx:annotation-driven transaction-manager="transactionmanager" /> transactionmanager 선언 Sample public void removerole(role role) throws Exception { this.roledao.removerole(role); 트랙잭션처리하고자하는메소드위에기재하여트랜잭션관리

73 5. Transaction 설명 (2/12) Configuration Transaction Management XML 정의설정을이용해서 Transaction 을관리할수있다. Configuration <aop:config> <aop:pointcut id="requiredtx" expression="execution(* egovframework.sample..impl.*impl.*(..))" /> <aop:advisor advice-ref="txadvice" pointcut-ref="requiredtx" /> </aop:config> <tx:advice id="txadvice" transaction-manager="transactionmanager"> <tx:attributes> <tx:method name="find*" read-only="true" /> <tx:method name="createnorbrole" no-rollback-for="norolebacktx" /> <tx:method name="createrbrole" rollback-for="rolebacktx" /> <tx:method name="create*" /> </tx:attributes> </tx:advice> aop:pointcut 를이용하여실행되어 Catch 해야하는 Method 를지정하고 tx:advice 를통해서각각에대한룰을정의하고있다. 이렇게정의하면프로그램내에서는별도의트랜잭션관련한사항에대해기술하지않아도트랜잭션관리가된다

74 5. Transaction 설명 (3/12) <tx:method> 상세속성정보 속성설명사용예 name 메소드명기술. 와일드카드사용가능함 Name= find* isolation Transaction 의 isolation Level 정의하는요소 Isolation= DEFAULT no-rollback-for 정의된 Exception 목록에대해서는 rollback을수행하지않음 No-rollbackfor= NoRolBackTx propagation Transaction 의 propagation 유형을정의하기위한요소 propagation= REQUIRED read-only 해당 Transaction 을읽기전용모드로처리 (Default=false) read-only= true rollback-for 정의된 Exception 목록에대해서는 rollback 수행 rollback-for=rolebacktx timeout 지정한시간내에해당메소드수행이완료되지않은경우 rollback 수행. timeout=

75 5. Transaction 설명 (4/12) Propagation Behavior,Isolation Level( 두가지 Transaction Management 공통적으로사용되는항목 ) Propagation Behavior Isolation Level

76 5. Transaction 설명 (5/12) Programmatic Transaction Management 프로그램에서직접트랜잭션을관리하고자할때사용할수있는방법에대해서설명하고자한다. TransactionTemplate 를사용하는방법과 TransactionManager 를사용하는방법두가지가있다. TransactionTemplate Configuration <bean id="transactiontemplate" class="org.springframework.transaction.support.transactiontemplate"> <property name="transactionmanager" ref="transactionmanager" /> </bean> <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean> TransactionTemplate 를정의하고 property 로 transactionmanager 을정의한다

77 5. Transaction 설명 (6/12) TransactionTemplate 를이용한 Sample public void testinsertcommit() throws Exception { transactiontemplate.execute(new TransactionCallbackWithoutResult() { public void dointransactionwithoutresult(transactionstatus status) { try { Role role = new Role(); role.setroleid("role-001"); role.setrolename("role-001"); role.setroledesc(new Integer(1000)); roleservice.createrole(role); catch (Exception e) { status.setrollbackonly(); ); Role retrole = roleservice.findrole("role-001"); assertequals("rolename Compare OK",retRole.getRoleName(),"ROLE-001"); transactiontemplate.execute 에 TransactionCallbackWithoutResult 를정의하여 Transaction 관리를하는것을확인할수있다

78 5. Transaction 설명 (7/12) Transaction Manager Configuration <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean>

79 5. Transaction 설명 (8/12) Transaction Manager 를이용한 Sample public void testinsertrollback() throws Exception { int prevcommitcount = roleservice.getcommitcount(); int prevrollbackcount = roleservice.getrollbackcount(); DefaultTransactionDefinition txdefinition = new DefaultTransactionDefinition(); txdefinition.setpropagationbehavior(transactiondefinition.propagation_required); TransactionStatus txstatus = transactionmanager.gettransaction(txdefinition); try { Role role = new Role(); role.setroleid(thread.currentthread().getname() + "-roleid"); role.setrolename(thread.currentthread().getname() + "-rolename"); role.setroledesc(new Integer(1000)); roleservice.createrole(role); roleservice.createrole(role); transactionmanager.commit(txstatus); catch (Exception e) { transactionmanager.rollback(txstatus); finally { assertequals(prevcommitcount, roleservice.getcommitcount()); assertequals(prevrollbackcount + 2, roleservice.getrollbackcount()); Transaction 서비스를직접얻어온후에위와같이 try~catch 구문내에서 Transaction 서비스를이용하여, 적절히 begin, commit, rollback 을수행한다. 이때, TransactionDefinition 와 TransactionStatus 객체를적절히이용하면된다

80 5. Transaction 설명 (9/12) Transaction Service DataSource Transaction Service DataSource 를사용하여 Local Transaction 을관리할수있다. Configuration <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean> Jdbc driver <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="dbc:mysql://db2:1621/rte" /> database url <property name="username" value="rte" /> <property name="password" value="xxx" /> <property name="defaultautocommit" value="false" /> </bean> 사용자명자동commit 설정 암호

81 5. Transaction 설명 (10/12) Sample PlatformTransactionManager transactionmanager;... TransactionStatus txstatus = transactionmanager.gettransaction(txdefinition);

82 5. Transaction 설명 (11/12) JTA Transaction Service JTA 를이용하여 Global Transation 관리를할수있도록지원한다. Configuration <tx:jta-transaction-manager /> <jee:jndi-lookup id="datasource" jndi-name="dbmsxads" resource-ref="true"> <jee:environment> java.naming.factory.initial=weblogic.jndi.wlinitialcontextfactory java.naming.provider.url=t3://was:7002 </jee:environment> </jee:jndi-lookup> 위의설정예에서 jndi-name 과 java.naming.factory.initial,java.naming.provider.url 은사이트환경에맞추어변경해야한다. DataSource Transaction Service 와는달리 transationmanager 에대해서따로 bean 정의하지않아도된다

83 5. Transaction 설명 (12/12) JPA Transaction Service JPA Transaction 서비스는 JPA EntityManagerFactory를이용하여트랜잭션을관리한다. JpaTransactionManager는 EntityManagerFactory에의존성을가지고있으므로반드시 EntityManagerFactory 설정과함께정의되어야한다. 아래에서예를들어서설정방법을설명한다. 사용법은 DataSource Transaction Service와동일하다. Configuration <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory" /> </bean> <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="persistenceunitname" value="oraunit" /> <property name="persistencexmllocation" value="classpath:meta-inf/persistence.xml" /> <property name="datasource" ref="datasource" /> </bean> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="dbc:mysql://db2:1621/rte" /> <property name="username" value="rte" /> <property name="password" value="xxx" /> <property name="defaultautocommit" value="false" /> </bean> 위의설정을보면 transactionmanager 의 property 로 entiymanagerfactory 로지정하고 entitymanagerfactory 의 property 로 datasource 를지정하고그에필요한 driver 정보,Url 정보등을지정한것을확인할수있다. 설정한 datasource 기반하에서트랜잭션서비스를제공한다. 사이트환경에맞추어 driverclassname,url,username,password 는변경해서적용한다. 또한 persistenceunitname 과 persistencexmllocation 정보를지정하는것을알수있다

84 5. Transaction 참고자료 Spring Transaction Management

< 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개

< 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개 전자정부표준프레임워크 Data Access Service 소개 2011-02-23 오픈커뮤니티김영우커미터 < 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개 Contents 1. Data Access Service 개요 1-1. 데이터처리레이어란? 1-2. 데이터처리레이어구성요소 1-3. Data Access

More information

슬라이드 1

슬라이드 1 1. 개요 - 실행환경데이터처리레이어 (1/3) 데이터베이스에대한연결및영속성처리, 선언적인트랜잭션관리를제공하는 Layer 임 서비스그룹 설명 Presentation Layer 전자정부개발프레임워크실행환경 Business Logic Layer Persistence Layer Batch Layer Integration Layer Mobile Presentation

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Object Relation Mapping 오늘학습목표 ORM 에대한이해 Spring Data JPA 를활용한 ORM 구현 태그기반질답게시판 요구사항 설계실습 사용자는질문을할수있어야한다. 질문에대한답변을할수있어야한다. 질문을할때태그를추가할수있어야한다. 태그는태그풀에존재하는태그만추가할수있다. 태그가추가될경우해당태그수는 +1 증가, 삭제될경우해당태그수는 -1

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인 표준프레임워크로구성된컨텐츠를솔루션에적용하는것에문제가없는지확인 ( S next -> generate example -> finish). 2. 표준프레임워크개발환경에솔루션프로젝트추가. ( File -> Import -> Existring Projects into

More information

파워포인트 템플릿

파워포인트 템플릿 ibizsoftware 정호열차장 ( 표준프레임워크오픈커뮤니티커미터 ) Agenda 1. ibatis 와 Hibernate 의개념및특징 2. Hibernate 와 JPA 쿼리종류 3. ibatis 와 Hibernate 동시사용을위한 Transaction 처리방안 4. @EntityListeners 활용방법 Agenda 5. Hibernate 사용시 Dynamic

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

슬라이드 1

슬라이드 1 7. [ 실습 ] 예제어플리케이션개발 1. 실습개요 2. 프로젝트환경구성 3. 기본환경설정 4. 예제어플리케이션개발 5. 참조 - 539 - 1. 실습개요 (1/4) 7. [ 실습 ] 예제어플리케이션개발 스프링기반의 EGOV 프레임워크를사용하여구현된예제어플리케이션구현을통하여 Presentation Layer와 Business Layer의연계를살펴본다. 예제어플리케이션구현기능

More information

iBATIS-SqlMaps-2-Tutorial

iBATIS-SqlMaps-2-Tutorial ibatis SQL Maps 튜토리얼 For SQL Maps Version 2.0 June 17, 2004 번역 : 이동국 (fromm0@gmail.com) 오타및오역은위메일주소로보내주시기바랍니다. 1 소개 이튜토리얼은 SQL Maps 의전형적인사용법을설명한다. 각각의주제에대해서좀더상세한정보는 http://www.ibatis.com 에 서얻을수있는 SQL Maps

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

슬라이드 1

슬라이드 1 1. 개요 - 실행환경연계통합레이어 (1/3) 연계통합레이어는타시스템과의연동기능을제공하는 Layer 임 전자정부개발프레임워크실행환경 서비스그룹 Presentation Layer 설명 업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면구성, 사용자입력정보검증등의기능을제공함 Layer Presentation Layer Logic Business

More information

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편 4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편리한것들 1. slf4j 를활용한 Logger 생성을편리하게해보자 2. AOP 설정 JDBC

More information

(jpetstore \277\271\301\246\267\316 \273\354\306\354\272\270\264\302 Spring MVC\277\315 iBatis \277\254\265\277 - Confluence)

(jpetstore \277\271\301\246\267\316 \273\354\306\354\272\270\264\302 Spring MVC\277\315 iBatis \277\254\265\277 - Confluence) 8 중 1 2008-01-31 오전 12:08 오픈소스스터디 jpetstore 예제로살펴보는 Spring MVC와 ibatis 연동 Added by Sang Hyup Lee, last edited by Sang Hyup Lee on 1월 16, 2007 (view change) Labels: (None) 지금까지 Spring MVC 를셋팅하는과정에서부터하나의

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

No Slide Title

No Slide Title J2EE J2EE(Java 2 Enterprise Edition) (Web Services) :,, SOAP: Simple Object Access Protocol WSDL: Web Service Description Language UDDI: Universal Discovery, Description & Integration 4. (XML Protocol

More information

<property name="configlocation" value="classpath:/egovframework/sqlmap/example/sql-map-config.xml"/> <property name="datasource" ref="datasource2"/> *

<property name=configlocation value=classpath:/egovframework/sqlmap/example/sql-map-config.xml/> <property name=datasource ref=datasource2/> * 표준프레임워크로구성된컨텐츠를솔루션에적용 1. sample( 게시판 ) 프로젝트생성 - egovframe Web Project next generate example finish 2. 프로젝트추가 - 프로젝트 Import 3. 프로젝트에 sample 프로젝트의컨텐츠를추가, 기능동작확인 ⓵ sample 프로젝트에서 프로젝트로복사 sample > egovframework

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

untitled

untitled PowerBuilder 連 Microsoft SQL Server database PB10.0 PB9.0 若 Microsoft SQL Server 料 database Profile MSS 料 (Microsoft SQL Server database interface) 行了 PB10.0 了 Sybase 不 Microsoft 料 了 SQL Server 料 PB10.0

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

Microsoft PowerPoint - ibatis.pptx

Microsoft PowerPoint - ibatis.pptx Sustainability Solu 작성자 : 박찬연 Ibatis (2 nd ) 박찬연 () 2008. 04. 29 목차 소개 datasource sqlmap 트렌젝션 배치 SqlMapClient 로깅 SimpleDataSource ScriptRunner 2 소개 SQL Maps 프레임워크는관계형데이터베이스에접근할때필요한자바코드를현저하게줄일수있도록도와줍니다.

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드] GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가

More information

J2EE Concepts

J2EE Concepts ! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

I. Introduction... 1 II. Jdbc Support 구현배경 사용자요구사항 p6spy Architecture Architecture InjectionPa

I. Introduction... 1 II. Jdbc Support 구현배경 사용자요구사항 p6spy Architecture Architecture InjectionPa Anyframe Jdbc Support Plugin Version 1.1.0 저작권 2007-2014 삼성 SDS 본문서의저작권은삼성 SDS 에있으며 Anyframe 오픈소스커뮤니티활동의목적하에서자유로운이용이가능합니다. 본문서를복제, 배포할경우에는저작권자를명시하여주시기바라며본문서를변경하실경우에는원문과변경된내용을표시하여주시기바랍니다. 원문과변경된문서에대한상업적용도의활용은허용되지않습니다.

More information

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx (보험TM) 소개서 2015.12 대표전화 : 070 ) 7405 1700 팩스 : 02 ) 6012 1784 홈 페이지 : http://www.itfact.co.kr 목 차 01. Framework 02. Application 03. 회사 소개 01. Framework 1) Architecture Server Framework Client Framework

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 Spring 연동가이드 2010. 08 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference 2010-08 snkim

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

NoSQL

NoSQL MongoDB Daum Communications NoSQL Using Java Java VM, GC Low Scalability Using C Write speed Auto Sharding High Scalability Using Erlang Read/Update MapReduce R/U MR Cassandra Good Very Good MongoDB Good

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Web Application을 구성하는 패턴과 Spring ROO의 사례

Web Application을 구성하는 패턴과 Spring ROO의 사례 Spring Roo 와함께하는 쾌속웹개발 정상혁, KSUG (www.ksug.org) 목차 1. Tool 2. Demo 3. Application 1. Tool 1.1 개요 1.2 Command line shell 1.3 Round-trip 1.4 익숙한도우미들 1.1 개요 Text Based RAD Tool for Java Real Object Oriented의첫글자들

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 ibatis 연동가이드 2010. 09 Copyright c 2000~2014 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference 2010-09 snkim

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

단계

단계 TIBERO-WAS 연동 Guide 본문서에서는 Tibero RDBMS 에서제공하는 JDBC 통한 JEUS, WEBLOGIC 등다양한 WAS (Web Application Server) 제품과의연동방법을알아본다. Contents 1. Connection Pool 방식... 2 2. JEUS 연동... 3 2.1. JEUSMain.xml 설정 (Thin 방식

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 2012 년자바카페 OPEN 세미나 주제 : Spring 프레임워크중요구성원리 2012. 6. 16 Today Story 1. 티어와레이어 2. 웹프로그래밍과엔터프라이즈프로그래밍 3. MVC 모델과웹개발의흐름 4. Spring 3대구성원리와디자인패턴 5대원리 5. AJAX와데이터처리 Today Story 1. 티어와레이어 2. 웹프로그래밍과엔터프라이즈프로그래밍

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 Spring 연동가이드 2014. 10 Copyright c 2000~2014 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference 2010-08 snkim

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드]

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드] From Spring 1.x Spring 2.0 To 이일민 (Consultant, Epril) 안영회 (Consultant, Epril) 2 목차 q Spring의목표와전략 q Spring 2.0 q Core Container and DI q AOP q Portable Service Abstractions q Web q Spring Portfolio 3 Spring

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

MasoJava4_Dongbin.PDF

MasoJava4_Dongbin.PDF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: MasoJava4_Dongbindoc Revision number: Issued by: < > SI, dbin@handysoftcokr

More information

歯JavaExceptionHandling.PDF

歯JavaExceptionHandling.PDF (2001 3 ) from Yongwoo s Park Java Exception Handling Programming from Yongwoo s Park 1 Java Exception Handling Programming from Yongwoo s Park 2 1 4 11 4 4 try/catch 5 try/catch/finally 9 11 12 13 13

More information

ETL_project_best_practice1.ppt

ETL_project_best_practice1.ppt ETL ETL Data,., Data Warehouse DataData Warehouse ETL tool/system: ETL, ETL Process Data Warehouse Platform Database, Access Method Data Source Data Operational Data Near Real-Time Data Modeling Refresh/Replication

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 데이터베이스및설계 Chap 1. 데이터베이스환경 (#2/2) 2013.03.04. 오병우 컴퓨터공학과 Database 용어 " 데이타베이스 용어의기원 1963.6 제 1 차 SDC 심포지움 컴퓨터중심의데이타베이스개발과관리 Development and Management of a Computer-centered Data Base 자기테이프장치에저장된데이터파일을의미

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

iBATIS-SqlMaps-2

iBATIS-SqlMaps-2 ibatis SQL Maps 개발자가이드 Version 2.0 June 17, 2004 번역 : 이동국 (fromm0@gmail.com) 오타및오역은위메일주소로보내주시기바랍니다. 1 소개 SQL Maps 프레임워크는당신이관계형데이터베이스에접근할때필요한자바코드를현저하게줄일수있도록도와줄것이다. SQL Maps는간단한 XML서술자를사용해서간단하게자바빈즈를 SQL

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

슬라이드 1

슬라이드 1 NeoDeveloper 설치가이드 차례 1. 환경 3 2. 설치 3 2.1 웹서버설치 3 Tomcat 7 3 JDK 1.6 3 2.2 NeoDeveloper 설치 3 Neo Developer 서버구성 3 Demo용 User Application 구성 4 Neo Developer 서버 Data File 4 Client 개발 Tool 설치 4 3. 설정 5 3.1

More information

슬라이드 1

슬라이드 1 Continuous Integration 엔터프라이즈어플리케이션아키텍처 조영호카페PJT팀 2008.10.01 youngho.cho@nhncorp.com 목차 1. Domain Logic Pattern 2. Data Source Pattern 3. Putting It All Together 1. Domain Logic Pattern Layered Architecture

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

Intra_DW_Ch4.PDF

Intra_DW_Ch4.PDF The Intranet Data Warehouse Richard Tanler Ch4 : Online Analytic Processing: From Data To Information 2000. 4. 14 All rights reserved OLAP OLAP OLAP OLAP OLAP OLAP is a label, rather than a technology

More information

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri 6-20-4. Spring Boot REST CRUD 실습 (JPA, MariaDB) GitHub : https://github.com/leejongcheol/springbootrest 스프링부트에서 REST(REpresentational State Transfer) API 를실습해보자. RESTful 웹서비스는 JSON, XML 및기타미디어유형을생성하고활용할수있다.

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 MyBatis 연동가이드 2014. 10 Copyright c 2000~2014 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference 2013-12 sypark

More information

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2 DB 와 WEB 연동 (1) [2-Tier] Java Applet 이용 웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2 JAVA Applet 을이용한 Client Server 연동기법 } Applet

More information

Portal_9iAS.ppt [읽기 전용]

Portal_9iAS.ppt [읽기 전용] Application Server iplatform Oracle9 A P P L I C A T I O N S E R V E R i Oracle9i Application Server e-business Portal Client Database Server e-business Portals B2C, B2B, B2E, WebsiteX B2Me GUI ID B2C

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

Chap7.PDF

Chap7.PDF Chapter 7 The SUN Intranet Data Warehouse: Architecture and Tools All rights reserved 1 Intranet Data Warehouse : Distributed Networking Computing Peer-to-peer Peer-to-peer:,. C/S Microsoft ActiveX DCOM(Distributed

More information

thesis

thesis CORBA TMN Surveillance System DPNM Lab, GSIT, POSTECH Email: mnd@postech.ac.kr Contents Motivation & Goal Related Work CORBA TMN Surveillance System Implementation Conclusion & Future Work 2 Motivation

More information

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide FileMaker 13 5 5 5 6 6 6 7 7 8 8 8 8 9 9 10 10 11 11 12 12 12 12 12 12 13 13 14 14 16 16 18 4 19 19 20 20 21 21 21 23 23 23 23 25 26 26 26 26 27 28 28 28 28 29 31 31 32 33 33 33 33 34 34 35 35 35 36 1

More information

FileMaker ODBC 및 JDBC 가이드

FileMaker ODBC 및 JDBC 가이드 FileMaker ODBC JDBC 2004-2019 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, FileMaker Cloud, FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker,

More information

JDBC 소개및설치 Database Laboratory

JDBC 소개및설치 Database Laboratory JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

개발문서 Oracle - Clob

개발문서 Oracle - Clob 개발문서 ORACLE CLOB 2008.6.9 ( 주 ) 아이캔매니지먼트 개발팀황순규 0. clob개요 1. lob과 long의비교와 clob와 blob 2. 테이블생성쿼리 ( 차이점-추가사항 ) 3. select 쿼리 4. insert 쿼리및 jdbc프로그래밍 5. update 쿼리및 jdbc프로그래밍 (4, 5). putclobdata() 클래스 6. select

More information

Spring Batch 2.0 시작하기

Spring Batch 2.0 시작하기 작성자 : 최한수 (cuteimp@gmail.com) 최종수정일 : 2009 년 6 월 22 일 본문서는 Spring Batch을학습하고자하는사람들을위하여 Sample Project를통해 Spring Batch 의기본적인이해와사용을돕는것을목적으로한다. Spring Batch 소개 Spring Batch 란? 우리가일반적으로알고있는 Batch라는것은일괄적으로어떠한작업을반복적으로처리하는것이다.

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information