ALTIBASE 사용자가이드 Templete
|
|
- 용만 순
- 5 years ago
- Views:
Transcription
1 Real Alternative DBMS ALTIBASE, Since 1999 MyBatis 연동가이드 Copyright c 2000~2014 ALTBASE Corporation. All Rights Reserved.
2 Document Control Change Record Date Author Change Reference sypark Created Dbpark Updated Reviews Date Name (Position) Distribution Name Location MyBATIS 연동가이드 2 page of 61
3 목차 개요... 5 MYBATIS 개요... 6 MyBATIS 란?... 6 MyBatis 다운로드... 7 MYBATIS 와 IBATIS 와의차이점... 8 Java 요구버전... 8 Package 내부구조의변경... 8 SqlMap.xml 내부구조의변경... 8 사용용어의변경... 8 네임스페이스방식의변경... 8 MYBATIS 를이용한 SAMPLE 작성... 9 Mapper 파일작성... 9 Configuration 파일작성 Application 작성 ALTIBASE 연동 ALTIBASE JDBC Driver 얻는방법 JDBC Driver 에설정하는방법 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 FailOver 를이용한 Connection ALTIBASE5 와이전버전을동시에 Connection Procedure 호출 Function 호출 MYBATIS, SPRING, ALTIBASE 연동 Spring 에 MyBatis 를연동하여 datasource 를설정 Connection Pool 설정방법 트랜잭션관리 MyBatis 에서트랜잭션관리 MYBATIS 연동시고려사항 LOB 데이터처리 Insert 시 insert query 가중복되어보내지는현상 부록 (MYBATIS-ALTIBASE 연동 ) DB 테이블및시퀀스생성 프로젝트생성 패키지명명규칙 Configuration 파일작성 Mapper 파일작성 Application 작성 관련 JAR 파일추가 Application 실행 부록 2(SPRING-MYBATIS-ALTIBASE 연동 ) DB 테이블및시퀀스생성 Spring 설치 Maven 설치 프로젝트생성 패키지명명규칙 ApplicationContext 파일작성 MyBATIS 연동가이드 3 page of 61
4 Mapper 파일작성 Dependency Injection Application 작성 관련 JAR 파일추가 Application 실행 MyBATIS 연동가이드 4 page of 61
5 개요 본문서는 mybatis 환경, ibatis와의차이점, mybatis에서 ALTIBASE와연동하는방법에대해기술한다. mybatis 3.2.8, ALTIBASE는 버전, 개발 IDE로는 Eclipse, Maven을사용하였으며 chapter 와는별도로예제가제공된다. 본문서와더불어개발시참고해야할문서들은다음과같다. 1. ALTIBASE 개발가이드 2. JAVA 개발가이드 3. ALTIBASE_JBOSS 연동가이드 4. ALTIBASE_TOMCAT 연동가이드 5. ALTIBASE_WEBSPHERE 연동가이드 6. ALTIBASE_WEBLOGIC 연동가이드 7. ALTIBASE_Spring 연동가이드 8. ALTIBASE_HIBERNATE 연동가이드 9. ALTIBASE_iBatis 연동가이드 MyBATIS 연동가이드 5 page of 61
6 MyBatis 개요 본장에서는 MyBatis 의개념과특징, 다운로드및사용방법에대해살펴본다. MyBATIS 란? MyBatis 는개발자가지정한 SQL, 저장프로시저그리고몇가지고급매핑을지원하는퍼시스턴스프레임워크이다. MyBatis 는 JDBC 코드와수동으로셋팅하는파라미터와결과매핑을제거한다. MyBatis 는데이터베이스레코드에원시타입과 Map 인터페이스그리고자바 POJO 를설정하고매핑하기위해 XML 과애노테이션을사용할수있다. 기존의 JDBC 를이용하여프로그래밍하는방식은프로그램소스안에 SQL 문을작성하였지만, MyBatis 를이용하면 SQL 문을프로그램에서분리하여 XML 파일에별도로작성한다. 따라서프로그래머가기존의 JDBC 를사용할때보다프로그래밍하는부담이줄어들게된다. 뿐만아니라 SQL 을변경하고자할경우기존처럼프로그램을수정하는것이아니라 XML 파일의 SQL 문만을변경하면되기때문에 SQL 변환이자유롭다는특징이있다. 다음은 MyBatis 의구조를간단하게표현한그림이다. Configuration 파일 (SqlMapConfig.xml) : DB 설정과트랜잭션등 Mybatis 가동작하는규칙을정의. 매퍼 (Mapper) : SQL 을 XML 에정의한매퍼 XML 파일과 SQL 을인터페이스의메소드마다애노테이션으로정의한매퍼인터페이스를의미. MyBATIS 연동가이드 6 page of 61
7 매핑구문 (Mapped Statements) : 조회결과를자바객체에설정하는규칙을나타내는결과매핑과 SQL 을 XML 에정의한매핑구문을의미. 매핑구문을정의하는방법은애노테이션과 XML 방식두가지가존재함. 사용자는 CRUD 에대한각각의 SQL 문은 SqlMap XML 파일에작성하고이파일들을 SqlMapConfig XML 파일에작성하면 MyBatis API 를통해자동으로 Mapping 된 Statement 객체들을생성하여이를통해 DB 에 SQL 문을실행하게된다. MyBatis 는현재구글이인수하였으며홈페이지주소는다음과같다 > MyBatis 에대한다양한레퍼런스를제공하며한글번역페이지도존재하고있다.( MyBatis 다운로드 MyBatis 를사용하기위해서 Mybatis 관련 jar 파일이필요하다. 이 jar 파일은 페이지에서다운로드받을수있다. mybatis jar 를받아 eclipse 에서추가해주면되며 Maven 을사용한다면다음의구문을 pom.xml 에추가해주면된다. <dependency> </dependency> <groupid>org.mybatis</groupid> <artifactid>mybatis</artifactid> <version>3.2.8</version> Maven 을통하여 Library 를추가하는방법은부록 2 에서상세히설명한다. MyBATIS 연동가이드 7 page of 61
8 MyBatis 와 ibatis 와의차이점 ibatis 가 MyBatis 로변경되면서버전만변경된것으로생각했었으나 (ibatis : ~ 2.3 MyBatis : 2.5 ~) 확인해보니변경점이많아져서따로페이지에기술하게되었다. Java 요구버전 ibatis 에서는 JDK 1.4 이상에서사용이가능하였으나, MyBatis 에서는 JDK 1.5 이상을요구한다.(MyBatis 3.2 이상버전은 JDK 1.6 이상을요구한다.) Package 내부구조의변경 ibatis : com.ibatis.* MyBatis : org.apache.ibatis.*( 이름은변경되었지만내부적으로는여전히 ibatis 를사용하고있다.) SqlMap.xml 내부구조의변경 가장큰변경점은 parametermap 이 Deprecated 된점이라고할수있다. parametermap 을사용하지못하게되며기존 parametermap 을사용하던부분은아래와같이 parametertype 에정의하게되었다. ex) <insert id="insertblobdata" parametertype="lobvo"> insert into test_blob(user_no, user_name, blob_data, clob_data, reg_date) values(#{userno, #{username, #{blobdata,jdbctype=blob, #{clobdata,jdbctype=clob, #{regdate) </insert> 사용용어의변경 SqlMapConfig -> Configuration sqlmap -> mapper 로변경됨. 네임스페이스방식의변경 sqlmap 별로줄여놓은이름을사용할수없게되며경로를모두명시해주어야함. 또한 ibatis에서는 namespace가선택이었지만 MyBatis는필수항목이다. Ex) ibatis : <sqlmap namespace="lob"> MyBatis : <mapper namespace="com.altibase.sample.mapper.lobmapper"> MyBATIS 연동가이드 8 page of 61
9 MyBatis 를이용한 sample 작성 MyBatis 를이용하여 SQL 문을처리하기위해서는 Configuration XML 파일과 Mapper XML 파일을작성해야한다. 이파일들은프로그래머에게 JavaBean 을 PreparedStatement 의파라미터와 ResultSet 으로쉽게 mapping 할수있도록해준다. 본장에서는 Configuration XML 파일, Mapper XML 파일을작성하는방법과 application 에서이파일을이용하여실제로 SQL 을처리하는방법에대해설명한다. Sample 프로그램을작성하는보다자세한내용은부록부분을참고하면된다. Mapper 파일작성 Mapper XML 파일은 DB 로전송할 SQL 구문, PreparedStatement 로 binding 될 parameter 의 mapping, ResultSet 의 result 의 mapping 들을명시하는파일이다. 다음은 person 테이블에 CRUD 를처리하는 Mapper XML 파일을작성한예제이다. (UserMapper.xml) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//dtd Mapper 3.0//EN" " <mapper namespace="com.altibase.sidu.mapper.usermapper"> <select id="selectuserdata" parametertype="integer" resulttype="user"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users WHERE user_no = #{userno </select> <select id="selectalluserdata" resulttype="user"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users </select> <insert id="insertuserdata" parametertype="user"> insert into users(user_no, user_name, user_content, reg_date) values(#{userno, #{username, #{usercontent, #{regdate) </insert> <update id="updateuserdata" parametertype="user"> update users set user_name = #{username, user_content = #{usercontent, reg_date = #{regdate where user_no = #{userno </update> <delete id="deleteuserdata" parametertype="user"> delete from users where user_no = #{userno </delete> MyBATIS 연동가이드 9 page of 61
10 </mapper> <insert>, <update>, <delete>, <select> 태그에는 CRUD 의작업에대한각각의 SQL 문을정의한다. 각각의태그에대한보다자세한설명은 사이트를참고하거나첨부된문서 MyBatis-3-User-Guide_ko.pdf 파일을참고하면된다. Configuration 파일작성 Configuration 파일은 DB 연결을위한 datasource, Mapper 파일의경로, typealiases 의설정외 SqlMapClient 를제어할 property 들을작성하는 SQL Maps 설정파일이다. 다음은 Configuration 파일 (mybatis-config.xml) 예제이다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//dtd Config 3.0//EN" " <configuration> <properties resource="db.properties" /> <typealiases> <typealias type="com.altibase.sidu.model.uservo" alias="user" /> </typealiases> <!-- DB 연결옵션 : UNPOOLED/POOLED/JNDI --> <!-- transanctionmanager 옵션 : JDBC/MANAGED --> <environments default="development"> <environment id="development"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc.driver" /> <property name="url" value="${jdbc.url" /> <property name="username" value="${jdbc.username" /> <property name="password" value="${jdbc.password" /> <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> </environment> </environments> <mappers> <mapper resource="com/altibase/sidu/mapper/usermapper.xml" /> </mappers> </configuration> <properties> 태그에는 name=value 형태로정의된 property 들을작성한 properties 파일의경로및이름을명시해주고, <settings> 태그에는 Configuration 을제어할 property 들을, <transactionmanager> 와 <datasource> 에는연결할 DB 정보를작성한다. 또, <mappers> 태그에는미리작성한 Mapper 파일들의경로및이름을작성한다. MyBATIS 연동가이드 10 page of 61
11 다만이전 ibatis 와다른점은 ibatis 에서 DB 설정을한개만할수있었던것에비해서 MyBatis 는설정파일에여러개의 DB 를설정하고 SqlSessionFactory 객체를생성하는시점에서특정 DB 를설정할수있다. 각각의태그에대한보다자세한설명은 사이트를참고하거나첨부된문서 MyBatis-3-User-Guide_ko.pdf 파일을참고하면된다. Application 작성 Application 에서 MyBatis 에서제공하는 SqlSession 객체의 instance 를이용하여 DB 테이블에 Mapping 된객체와연동하여 CRUD 작업을처리할수있다. MyBatis 를이용하여 DB 와연동하기위해서는먼저 DB 연결에대한설정이있는 Configuration 파일을읽어 SqlSessionFactory 객체를생성하고해당객체에서 SqlSession 객체를얻어 Mapper 에매핑되는쿼리를처리하게된다. 다음은 DB 의 users 테이블에데이터를삽입, 변경, 삭제, 조회하는 application 이다. Application 에서연결을얻어오는부분은별도의 Class 로분류하였다. 예 ) altibase_mybatis_sidu 의 SiduMain.java // Configuration DB Connection MybatisUtil.java inputstream = Resources.getResourceAsStream("mybatis-config.xml"); sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputStream); sqlsession = sqlsessionfactory.opensession(false); UserVo uservo = new UserVo(); //select User String statement = "com.altibase.sidu.mapper.usermapper.selectuserdata"; uservo = MybatisUtil.getSqlSessionFactory().selectOne(statement, user_no); // select all User List<UserVo> uservos = MybatisUtil.getSqlSessionFactory().selectList(statement); // update User String statement = "com.altibase.sidu.mapper.usermapper.updateuserdata"; res_count = MybatisUtil.getSqlSessionFactory().update(statement, uservo); // insert User String statement = "com.altibase.sidu.mapper.usermapper.insertuserdata"; res_count = MybatisUtil.getSqlSessionFactory().insert(statement, uservo); // delete User String statement = "com.altibase.sidu.mapper.usermapper.deleteuserdata"; res_count = MybatisUtil.getSqlSessionFactory().insert(statement, user_no); MyBATIS 연동가이드 11 page of 61
12 먼저 Mapper 파일을읽어들여 SqlSessionFactory 객체를생성하며생성된 SqlSessionFactory 객체에서 SqlSession 객체를생성하며, Sample 에서 SqlSession 을가져온메소드는다음과같다. sqlsessionfactory.opensession(boolean arg0); ) 해당메소드의 Boolean 인자는 autocommit 모드를결정하는값이다.( inputstream = Resources.getResourceAsStream("mybatis-config.xml"); sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputStream); sqlsession = sqlsessionfactory.opensession(false); 이후 SqlSession 객체와 Mapper 에명명되어있는 id 를가지고 CRUD 클래스의각각의메소드를호출한다. ( String statement = "com.altibase.sidu.mapper.usermapper.updateuserdata"; sqlsession.update(statement, update);) 각각의태그에대한보다자세한설명은 사이트를참고하거나첨부된문서 MyBatis-3-User-Guide_ko.pdf 파일을참고하면된다. MyBATIS 연동가이드 12 page of 61
13 ALTIBASE 연동 MyBatis 에서 ALTIBASE 를연동하는위해서는 ALTIBASE JDBC Driver 를 setting 하고 Configuration 파일에 ALTIBASE 를위한 datasource 를지정하면된다. 본장에서는 ALTIBASE JDBC Driver 를얻는방법, JDBC Driver 를설정하는방법, Configuration 에 datasource 를설정하는방법에대해설명한다. 또한, FailOver 기능을사용하는방법, 여러버전의 ALTIBASE 와연동하는방법, Stored Procedure/Function 을호출하는방법에대해서도살펴본다. ALTIBASE JDBC Driver 얻는방법 ALTIBASE 에서제공하는 JDBC driver 는 Altibase.jar 파일이다. 이파일은 ALTIBASE 가설치되어있는서버의 $ALTIBASE_HOME/lib 디렉토리안에존재한다. ALTIBASE 5 버전부터는 $ALTIBASE_HOME/lib 디렉토리에 Altibase.jar 파일과 Altibase5.jar 파일이존재하는데, Altibase.jar 는일반 JDBC Driver 파일이고, Altibase5.jar 는 ALTIBASE 5 버전과그이하의버전을함께연동하고싶을때사용하는 JDBC Driver 파일이다. 따라서하나의 ALTIBASE DB 와연동하거나, 또는버전이동일한여러대의 ALTIBASE 와연동할경우에는 $ALTIBASE_HOME/lib/Altibase.jar 파일을사용하면된다. 연동하려는 ALTIBASE DB Server 와 ALTIBASE JDBC Driver 가호환가능한지확인을위해 ALTIBASE JDBC Driver 버전확인이필요하다. ALTIBASE JDBC Driver 버전을확인하는방법은다음의명령어를수행하면된다. $ java jar Altibase.jar JDBC Driver Info : Altibase Ver = for JavaVM v1.4, CMP:7.1.1, Oct :54:56 이때, ALTIBASE DB Server 의 cm protocol version 과 ALTIBASE JDBC Driver 의 CMP 가동일하면호환가능하다. $ altibase -v version X86_64_LINUX_redhat_Enterprise_ES4-64bit release-GCC3.4.6 (x86_64-unknown-linux-gnu) Oct :16:24, binary db version 6.2.1, meta version 6.3.1, cm protocol version 7.1.1, replication protocol version 버전이 UP 되면서 JDBC 관련버그가 fix 되었을가능성이있으므로, 일반적으로 ALTIBASE DB Server 의버전과같거나이보다더최신의 ALTIBASE JDBC Driver 파일을사용하는것을권장한다. MyBATIS 연동가이드 13 page of 61
14 JDBC Driver 에설정하는방법 다운로드받은 JDBC Driver 인 Altibase.jar 파일은 classpath 에추가하거나웹서버의적절한디렉토리에위치시킨다. 만약, Eclipse 를사용하여개발한다면다음과같이해당프로젝트에 ALTIBASE JDBC Driver 를추가할수있다. 프로젝트 Properties Java Build Path 메뉴로이동하여 Add External JARS 메뉴를통해라이브러리를등록한다. MyBATIS 연동가이드 14 page of 61
15 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 Configuration 파일의 <configuration> 태그에 ALTIBASE 용 property 를지정하여 ALTIBASE 와연결하면된다. 이때 Configuration 파일에직접 property 값을입력할수있고, 또는별도의 properties 파일을작성하여이파일에작성된 property 값을로딩하여사용할수도있다. 다음은 db.properties 라는 properties 파일에 ALTIBASE 에대한 property 들을정의하고, 이 property 들을읽어와 Configuration 파일에서사용하는예제이다. 예 ) altibase_mybatis_sidu 의 db.properties 파일 jdbc.driver=altibase.jdbc.driver.altibasedriver jdbc.url=jdbc:altibase:// :36492/mydb jdbc.username=sys jdbc.password=manager 이파일에설정된각각의값의의미는다음과같다. Property 설명 driver url username password ALTIBASE JDBC driver class Name ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 예 ) altibase_mybatis_sidu 의 mybatis-config.xml 파일 <configuration> <properties resource="db.properties" /> <typealiases> <typealias type="com.altibase.sidu.model.uservo" alias="user" /> </typealiases> <!-- DB 연결옵션 : UNPOOLED/POOLED/JNDI --> <!-- transanctionmanager 옵션 : JDBC/MANAGED --> <environments default="development"> <environment id="development"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc.driver" /> <property name="url" value="${jdbc.url" /> <property name="username" value="${jdbc.username" /> <property name="password" value="${jdbc.password" /> <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> </environment> </environments> <mappers> <mapper resource="com/altibase/sidu/mapper/usermapper.xml" /> </mappers> </configuration> MyBATIS 연동가이드 15 page of 61
16 db.properties 에지정한 driver, url, username, password property 들을읽어와 datasource 의 JDBC.Driver, JDBC.ConnectionURL, JDBC.Username, JDBC.password property 에 setting 하고있다. 위의예제 SimpleConnection 프로젝트를실행하기위해서는 Altibase.jar, mybatis jar 파일이필요하다. FailOver 를이용한 Connection ALTIBASE 부터 FailOver 를지원하는데, FailOver 기능을사용하기위해서는 datasource 의 Connection url 을적어주는부분에 FailOver 관련속성을넣어주면된다. 다음은 FailOver 를이용하여 ALTIBASE 에연결하는예제이다. db.properties 파일에 Connection url 부분을정의하였다. 예 ) FailOverSample 의 db.properties 파일 driver=altibase.jdbc.driver.altibasedriver url=jdbc:altibase:// :21129/mydb? AlternateServers=( :21129)& ConnectionRetryCount=1&ConnectionRetryDelay=1& SessionFailOver=on&LoadBalance=off&Healthcheckduration=10& Failover_source=MESSAGE& username=sys password=manager 위의파일에지정한 Connection url 부분에정의할수있는 FailOver 관련 property 는다음과같다. Property AlternateServer ConnectionRetryCount 설명 장애발생시접속하게될가용서버를나타내며 (IP Address1:Port1, IP Address2:Port2,...) 형식으로기술한다. 가용서버접속실패시, 접속시도반복횟수 MyBATIS 연동가이드 16 page of 61
17 Property ConnectionRetryDelay LoadBalance SessionFailOver 설명 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) on 으로설정하면최초접속시도시에기본서버와가용서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternateServer 로기술한서버에접속한다. STF(Service Time Fail-Over) 를할것인지여부를나타낸다. on : STF, off : CTF CTF(Connection Time Fail-Over) 는 DBMS 접속시점에장애를인식하여다른정상서버로접속을재시도하는것을의미한다. Healthcheckduration Failover_source STF(Service Time Fail-Over) 는서비스하는도중에장애를감지하여다른가용노드의 DBMS 에다시접속하여세션의프로퍼티를복구한후사용자응용프로그램의업무로직을다시수행할수있도록하는것을의미한다. (STF 는 DB 접속에대해서만 Fail-Over 를수행해주는것이며실패한트랜잭션에대해서는사용자에의해재처리되어야한다 ) Failover가발생한서버가다시 AlternativeServer 목록으로재설정되기위한대기시간을지정한다. 서버에 Connection Failover가발생하면, 해당서버는 AlternativeServer의목록에서제거된다. 그리고삭제된서버는특정시간이지난후에다시 AlternativeServer 목록에추가되는데, 그시간을결정하는프로퍼티가 HealthCheckDuration이다. 단위는초 (second) 이다. Failover를수행할때, 서버에전달하는 Failover source에대한설명을지정한다. 이정보는 V$SESSION 성능뷰의 FAILOVER_SOURCE 칼럼에저장된다. 위의예제 FailOverSample 프로젝트를실행하기위해서는 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 과마찬가지로 Altibase.jar, ibatis x.jar 파일이필요하다. ALTIBASE5 와이전버전을동시에 Connection ALTIBASE 5 부터는하나의어플리케이션에서 ALTIBASE 6 와 ALTIBASE 5 혹은 ALTIBASE 4 와동시에연결할수있도록 ALTIBASE 5 버전전용의 JDBC Driver(Altibase5.jar) 를제공한다. 이 Driver 를이용하면 ALTIBASE 6 ALTIBASE 5, 혹은 ALTIBASE 6 ALTIBASE 4, ALTIBASE ALTIBASE 간두버전의 ALTIBASE 에접속이가능하다. 기존의 Altibase.jar 와구별하기위해별도로 ALTIBASE 5 전용의 Altibase5.jar 가필요하다. 또한 datasource 에지정해주는부분에 JDBC Driver 클래스이름도기존의 MyBATIS 연동가이드 17 page of 61
18 Altibase.jdbc.driver.AltibaseDriver 대신 ALTIBASE 5 전용의 Altibase5.jdbc.driver.AltibaseDriver 를지정해야한다. MyBatis 에다른버전의 ALTIBASE 와연동하기위해서는각버전에해당하는 <environment> 태그를작성하여 Application 에서 <environment> 의 id 를통해 DB 연결시각각의설정을읽어드리면된다. 이때주의할점은프로그램에서 Altibase5.jdbc.driver.AltibaseDriver 를먼저로딩한후에 Altibase.jdbc.driver.AltibaseDriver 를로딩해야한다는것이다. 다음은 Altibase.jar 와 Altibase5.jar 파일을이용하여두버전의 ALTIBASE 의드라이버를로딩하는예제이다. 예 ) altibase_mybatis_multiversionconnection 의 db.properties 파일 ALTIBASE 6 버전에대한설정 # Altibase jdbc.driver=altibase.jdbc.driver.altibasedriver jdbc.url=jdbc:altibase:// :21020/mydb jdbc.username=test jdbc.password=test 예 ) altibase_mybatis_multiversionconnection 의 db.properties 파일 ALTIBASE 6 이전버전에대한설정 # Altibase 5 jdbc5.driver=altibase5.jdbc.driver.altibasedriver jdbc5.url=jdbc:altibase:// :21020/mydb jdbc5.username=test jdbc5.password=test 예 ) altibase_mybatis_multiversionconnection 의 mybatis-config.xml 파일 ALTIBASE 6 버전에대한설정 <environment id="release"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc.driver" /> <property name="url" value="${jdbc.url" /> <property name="username" value="${jdbc.username" /> <property name="password" value="${jdbc.password" /> <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> </environment> ALTIBASE 6 이전버전에대한설정 <environment id="development"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc5.driver" /> <property name="url" value="${jdbc5.url" /> <property name="username" value="${jdbc5.username" /> <property name="password" value="${jdbc5.password" /> MyBATIS 연동가이드 18 page of 61
19 <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> </environment> 예 ) altibase_mybatis_multiversionconnection 의 MultiVersionConnectionMain.java 파일 MultiVersionConnectionSelect multi_connection_select = new MultiVersionConnectionSelect(); System.out.println("DB Version = " + multi_connection_select.multiversionconnectiondbversionselect("release")); System.out.println("DB Version = " + multi_connection_select.multiversionconnectiondbversionselect("development")); altibase_mybatis_multiversionconnection 의 MultiVersionConnectionSelect.java (public String MultiVersionConnectionDBVersionSelect(String conn_type)) String statement = "com.altibase.multiversionconnection.mapper.usermapper.selectdbversion"; res_string = MybatisUtil.getSqlSessionFactory(conn_type).selectOne(statement); 위의 MultiVersionConnectionMain.java.java 예제를보면 Altibase5.jdbc.driver.AltibaseDriver 를 Altibase.jdbc.driver.AltibaseDriver 보다먼저로딩하기위해 ALTIBASE 5 버전 driver 의 <environment> 태그의 id 인 release 를인자값으로설정하고있다. 위에서도기술하였듯이 Altibase5.jdbc.driver.AltibaseDriver 드라이버를먼저로딩해야한다. 예제에포함된 MultiVersionConnection 프로젝트를실행하기위해서는기존에사용했던 mybatis jar 파일뿐만아니라, Altibase.jar 와 Altibase5.jar 파일이더필요하다. 이파일들은 ALTIBASE 가설치된디렉토리 ($ALTIBASE_HOME) 의 lib 디렉토리안에존재하는데 ALTIBASE 5 버전의 Altibase5.jar 파일, 그이전버전의 Altibase.jar 파일을사용하면된다. - ALTIBASE jar : Altibase.jar - ALTIBASE 5.x.x.jar : Altibase5.jar MyBATIS 연동가이드 19 page of 61
20 Procedure 호출 mybatis 에서 DB 에생성한 Stored Procedure 을호출할경우에는기본적인 DML 동작과같이 Configuration 파일에설정해주면되며다음의항목을아래와같은점에주의하여사용하여야한다. - 기존 ibatis 에서사용하던 <procedure> 태그가사라지고 statementtype 으로만판단하므로 Procedure/Function 사용시에는 statementtype 을필히 CALLABLE 로설정해야함. - 기존 ibatis 에서사용하던 <parametermap> 을사용할수없다. 다음은 Stored Procedure 의 Select 하는예제이다. 예 ) altibase_mybatis_procedure 의 Procedure 생성구문 CREATE OR REPLACE PROCEDURE PROC_SEL_TEST(usr_no IN INTEGER, res_user OUT TEST_TYPE.TEST_CUR) as SQL_STMT VARCHAR(200); BEGIN SQL_STMT :='SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users WHERE user_no =?'; OPEN res_user FOR SQL_STMT USING usr_no; END; / CREATE or replace TYPESET TEST_TYPE AS TYPE TEST_CUR IS REF CURSOR; MyBATIS 연동가이드 20 page of 61
21 END; / 예 ) altibase_mybatis_procedure 의 UserMapper.xml(Mapper) 파일 <select id="testselectproc" statementtype="callable" parametertype="integer" resulttype="user"> { call PROC_SEL_TEST( #{userno,mode=in,jdbctype=integer,javatype=integer ) </select> <select> 태그에 statementtype 의속성을 CALLABLE 로지정하여해당요청이 Procedure/Function 이라는것을명시하고호출하는 Procedure/Function 의 IN 파라미터에대한설정을정의하며 resulttype 에 Bean 클래스를지정함으로써해당 procedure 에대한결과를 Bean 클래스로받아오게된다. 이때 Bean 클래스의컬럼과 DB 서 select 하는컬럼명을동일하게맞춰줘야 Bean 클래스에결과가리턴된다. altibase_mybatis_procedure 예제를실행하기위해서는 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 과마찬가지로 Altibase.jar, mybatis jar 파일이필요하다. Function 호출 mybatis 에서 DB 에생성한 Function 을호출할경우에는기본적인 DML 동작과같이 Configuration 파일에설정해주면되며다음의항목을아래와같은점에주의하여사용하여야한다. - 기존 ibatis 에서사용하던 <procedure> 태그가사라지고 statementtype 으로만판단하므로 Procedure/Function 사용시에는 statementtype 을필히 CALLABLE 로설정해야함. - 기존 ibatis 에서사용하던 <parametermap> 을사용할수없다. 다음은단순한덧셈결과를리턴하는 Stored Function 처리예제이며기본적인것은 Stored Procedure 와동일하지만에서호출하는부분이약간달라따로기술하게되었다. 예 ) altibase_mybatis_procedure 의 Function 생성구문 CREATE OR REPLACE FUNCTION sum_func ( p_num1 IN NUMBER, p_num2 IN NUMBER ) RETURN NUMBER AS v_num NUMBER; BEGIN v_num := p_num1 + p_num2; RETURN v_num; END; / 예 ) altibase_mybatis_procedure 의 UserMapper.xml(Mapper) 파일 MyBATIS 연동가이드 21 page of 61
22 <select id="testselectfunc" statementtype="callable" parametertype="map" resulttype="integer"> { call #{resnum,mode=out,jdbctype=integer,javatype=integer := SUM_FUNC( #{Num1,mode=IN,jdbcType=INTEGER,javaType=INTEGER, #{Num2,mode=IN,jdbcType=INTEGER,javaType=INTEGER ) </select> 기본적인설정법은 Stored Procedure 방법과동일하지만 Mapper 에서 Function 을호출하는형식이다르다. Stored Procedure 의호출과의차이점은다음과같다. Procedure : call PROC_SEL_TEST(#{IN); Function : call #{OUT := SUM_FUNC(#{IN) Function 을 Mapper 에서호출시에위와같은형식을지켜야정상적인 Function Call 이가능하다. altibase_mybatis_procedure 예제를실행하기위해서는 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 과마찬가지로 Altibase.jar, mybatis jar 파일이필요하다. MyBATIS 연동가이드 22 page of 61
23 MyBatis, Spring, ALTIBASE 연동 MyBatis, Spring 을 ALTIBASE 와연동하기위해서는 Spring 에 MyBatis 모듈을이용하여 datasource 를정의하고 ATLIBASE 와연동해야한다. 본장은 Spring 에 MyBatis 모듈을이용하여 ALTIBASE 와연결하는방법을설명한다. Spring 에 MyBatis 를연동하여 datasource 를설정 Spring 과 MyBatis 를함께사용하여 ALTIBASE 를사용하기위해서는 Spring 의설정파일 (applicationcontext.xml) 에다음의내역을설정한다. - MyBatis 모듈을이용한 SqlSessionFactory bean - 트랜잭션에대한설정인 transactionmanager - DB 에대한 datasource - Mapper Bean 설정 연동작업을수행하려면 Mybatis 와 Spring 연동관련모듈이필요하며모듈의이름은다음과같다. - mybatis-spring-1.x.x.jar mybatis-spring 연동모듈을사용하려면자바 1.5 이상의버전이필요하고 MyBatis 와 Spring 은각각 Version 별로조금씩다르다. 세부정보는아래의표를참고하기바란다. MyBatis Spring 연동모듈 Mybatis Spring 그리고 에서 까지 또는그이상 또는그이상 또는그이상 또는그이상 또는그이상 MyBatis 와 Spring 을함께사용하기위해서는 Spring 의 ApplicationContext.xml 파일에 MyBatis 의 SqlSessionFactory bean 및 Mapper bean 을지정해주면된다. Mapper bean 은실제쿼리를처리하는메소드를정의한 bean 으로 Spring 의처리방식인 Interface 를통하여처리하게된다. MyBatis, Spring 을연동한환경에서 Spring 에 datasource 를설정하는방법은 ALTIBASE_Spring_ 연동가이드 문서에서설명한방법들중하나를선택하여 SqlSessionFactory bean 및 TransactionManager bean 의 datasource property 에설정한 DB 의 datasource 명을기술하면된다. 다음은 applicationcontext.xml 파일에서 datasource 와 SqlSessionFactory bean, TransactionManager bean 을지정해주는예제이다. 예 ) altibase_mybatis_spring 의 ApplicationContext.xml 파일 MyBATIS 연동가이드 23 page of 61
24 <!-- DriverManagerDataSource 클래스를이용한데이터소스설정 --> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> <property name="url" value="jdbc:altibase:// :36492/mydb" /> <property name="username" value="sys" /> <property name="password" value="manager" /> </bean> <!--TransactionManager bean 설정 --> <bean id= TransactionManager " class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean> <!-- SqlSessionFactory bean 설정 --> <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"> <property name="datasource" ref="datasource" /> <property name="typealiasespackage" value="com.altibase.test.domain" /> </bean> 해당예제는 Spring Template Project 를기반으로 Maven 을사용하여작성하였다. 실제사용자가추가하는 library 는 DB 접속라이브러리 (Altibase.jar), Mybatis 관련라이브러리 (mybatis jar), Mybatis-Spring 연동라이브러리 (Mybatisspring jar) 만필요하며 Spring 관련라이브러리는 Maven 을이용하여처리한다.(Spring Template Project 에서 Spring MVC Project 를통해작성하였으며해당모드로작성시생성되는 pom.xml 파일에 dependency 태그를이용하여자동으로 Library 를 import 한다. 자세한내용은부록에명시한다.) MyBATIS 연동가이드 24 page of 61
25 Connection Pool 설정방법 Spring-Mybatis 가연동됨에따라 datasource 를설정하는부분이독립적으로설정이가능하게된다. Spring 연동없이 Mybatis 에서만다른모듈의 Connection Pool 를사용할수없으며 Spring 과연동을해야다른모듈의 Connection Pool 를사용할수있다는것을주의해야한다. 아래내역은 Connection Pool 을설정하는예제이다. 예 ) altibase_mybatis_spring 의 applicationcontext.xml 파일... <! Altibase Connection Pool--> <bean id="datasource" class="altibase.jdbc.driver.altibaseconnectionpooldatasource"> <property name="url" value="jdbc:altibase:// :21020/mydb" /> <property name="user" value="test" /> <property name="password" value="test" /> </bean>... <! Apache Connection Pool--> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> <property name="url" value="jdbc:altibase:// :36492/mydb" /> <property name="username" value="sys" /> <property name="password" value="manager" /> <property name="initialsize" value="10" /> <property name="minidle" value="25" /> <property name="maxidle" value="30" /> <property name="maxactive" value="100" /> <property name="validationquery" value="select 1 from dual" /> </bean> MyBATIS 연동가이드 25 page of 61
26 트랜잭션관리 MyBatis 에서 DB 와연동할경우 Configuration 파일의 <environments> 의 DB 별 <environment> 태그의 <transactionmanager> 에 datasource 를지정하고 <environment> 의 id 를가지고 SqlSessionFactory 객체를통해 DB 와연결하며이때 auto-commit mode 도설정이가능하다. Default 는 autocommit 모드이다. 본장에서는이러한트랜잭션관리방법들을소개한다. MyBatis 에서트랜잭션관리 MyBatis 에서 DB 와연동할경우 ibatis 에서설정파일하나에한개의 DB 를설정할수있었던것과다르게 MyBatis 는 DB 설정을 <environments> 태그로여러개의 DB 를설정할수있게관리한다. MyBatis 는 <environments> 내의 <environment> 태그하나당하나의 DB 를설정할수있으며 <environment> 태그의 <transactionmanager> 에 datasource 를지정하게되며 어플리케이션에서프로그래머가직접트랜잭션을관리할수있다. MyBatis 에서는트랜잭션시작과끝은따로존재하지않으며 Configuration 을통해 SqlSessionFactory 를설정할때 AutoCommit 모드설정이가능하다. 다음의예제는다중 DB 를하나의 Configuration 파일로설정하는예제이다. 예 ) altibase_mybatis_multiversionconnection 의 mybatis-config.xml 파일 <!-- DB 연결옵션 : UNPOOLED/POOLED/JNDI --> <!-- transanctionmanager 옵션 : JDBC/MANAGED --> <environments default="development"> <!-- development alias 의 connection configuration(5 version) --> <environment id="development"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc5.driver" /> <property name="url" value="${jdbc5.url" /> <property name="username" value="${jdbc5.username" /> <property name="password" value="${jdbc5.password" /> <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> </environment> <!-- release alias 의 connection configuration(6 or later version) --> <environment id="release"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${jdbc.driver" /> <property name="url" value="${jdbc.url" /> <property name="username" value="${jdbc.username" /> <property name="password" value="${jdbc.password" /> <property name="poolpingquery" value="select 1 from dual"/> <property name="poolmaximumactiveconnections" value="100"/> <property name="poolmaximumidleconnections" value="50"/> <property name="poolmaximumcheckouttime" value="20000"/> </datasource> MyBATIS 연동가이드 26 page of 61
27 </environment> </environments> 예 ) altibase_mybatis_multiversionconnection 의 MybatisUtil.java 파일 // mybatis-config.xml 로부터설정값을읽어옴 inputstream = Resources.getResourceAsStream("mybatis-config.xml"); // 읽어온 xml 파일로부터 SqlSessionFactory 를생성함.( 이때 environment id 를 nel 에인자값으로부여하여연결하려는 DB 설정 sqlsessionfactory = new SqlSessionFactoryBuilder()build(inputStream, release ); // sqlsession 객체생성. 이때인자값이 autocommit 여부를결정함. // default 는 true 이며 false 값을주게되면 autocommit=false sqlsession = sqlsessionfactory.opensession(false); 위의예제 altibase_mybatis_multiversionconnection 프로젝트를실행하기위해서는 Configuration 파일에 datasource 를설정하여 ALTIBASE 와연동 과마찬가지로 Altibase.jar, mybatis jar 파일이필요하다. MyBATIS 연동가이드 27 page of 61
28 MyBATIS 연동시고려사항 Spring 에서 ALTIBASE 에연동할경우고려해야할사항에대해설명한다. LOB 데이터처리 ibatis 에서는 LOB 을처리하기위해서는 Mapper 파일에 parameter 와 result 에대한정보를 setting 하는부분에반드시 jdbctype 을 CLOB/BLOB 이라고명시를해줘야하며 parametermap 을이용하여처리하였지만, Mybatis 에서는 parametermap 이 deprecated 되었기때문에쿼리의 binding 하는컬럼에 jdbctype 을직접명시한다. 명시하지않을경우 LOB 데이터로인식하지않아에러를발생하게된다. 다음은 CLOB 타입의데이터에대한 parametermap 과 resultmap 을지정하여 setting 하고있는예제이다. 예 ) altibase_mybatis_lob 의 LobMapper.xml(Mapper) 파일 <mapper namespace="com.altibase.psy.mapper.lobmapper"> <!-- LOB select, insert, update, delete Test /11/05 --> <select id="selectblobdata" parametertype="integer" resulttype="lobvo"> SELECT user_no as userno, user_name as username, blob_data as blobdata, clob_data as clobdata, reg_date as regdate FROM test_blob WHERE user_no = #{userno </select> <select id="selectallblobdata" resulttype="lobvo"> SELECT user_no as userno, user_name as username, blob_data as blobdata, clob_data as clobdata, reg_date as regdate FROM test_blob </select> <insert id="insertblobdata" parametertype="lobvo"> insert into test_blob(user_no, user_name, blob_data, clob_data, reg_date) values(#{userno, #{username, #{blobdata,jdbctype=blob, #{clobdata,jdbctype=clob, #{regdate) </insert> <update id="updateblobdata" parametertype="lobvo"> update test_blob set user_name = #{username, blob_data = #{blobdata,jdbctype=blob, clob_data = #{clobdata,jdbctype=clob, reg_date = #{regdate where user_no = #{userno </update>... </mapper> 또한 LOB 처리시반드시주의해야할사항은 ALTIBASE 에서 LOB 데이터를처리하기위해서는반드시 autocommit 모드를 false 로바꾼후트랜잭션을관리해줘야 MyBATIS 연동가이드 28 page of 61
29 한다는것이다. ibatis 연동시 SqlMapConfig 파일의 <transactionmanager> 에 datasource 를설정할경우에는내부적으로 setautocommit(false); 메소드를호출하여 autocommit 모드를 false 로바꿔주기때문에 LOB 처리시따로고려할사항은없으나 MyBatis 에서는 default 가 true 이기때문에 Session 을얻어올때명시해주어야한다. 만약 autocommit 모드를 false 로변경해주지않으면, java.sql.sqlexception: [0]:LobLocator can not span the transaction 과같은에러가발생한다. 그리고 LOB 데이터를입력시에도 java.sql.sqlexception: [0]:LobLocator can not span the transaction 에러가발생하게된다. 다음의예제는 MyBatis 에서 Lob 데이터를처리하는 Sample 의일부이며전체소스는부록에첨부하였다. 예 ) altibase_mybatis_lob 의 LobMapper.xml 파일 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//dtd Mapper 3.0//EN" " <mapper namespace="com.altibase.psy.mapper.lobmapper"> <!-- LOB select, insert, update, delete Test /11/05 --> <select id="selectblobdata" parametertype="integer" resulttype="lobvo"> SELECT user_no as userno, user_name as username, blob_data as blobdata, clob_data as clobdata, reg_date as regdate FROM test_blob WHERE user_no = #{userno </select> <select id="selectallblobdata" resulttype="lobvo"> SELECT user_no as userno, user_name as username, blob_data as blobdata, clob_data as clobdata, reg_date as regdate FROM test_blob </select> <insert id="insertblobdata" parametertype="lobvo"> insert into test_blob(user_no, user_name, blob_data, clob_data, reg_date) values(#{userno, #{username, #{blobdata,jdbctype=blob, #{clobdata,jdbctype=clob, #{regdate) </insert> </mapper> <update id="updateblobdata" parametertype="lobvo"> update test_blob set user_name = #{username, blob_data = #{blobdata,jdbctype=blob, clob_data = #{clobdata,jdbctype=clob, reg_date = #{regdate where user_no = #{userno </update> <delete id="deleteblobdata" parametertype="integer"> delete from test_blob where user_no = #{userno </delete> 위의 altibase_mybatis_lob 프로젝트를실행하기위해서는 Altibase.jar, mybatis jar 파일이필요하다. MyBATIS 연동가이드 29 page of 61
30 Insert 시 insert query 가중복되어보내지는현상 문제가나오는현상 : mybatis 설정 xml 내에서 'usegeneratedkeys' 설정을 true 로하면위의문제점발생 위설정은아래와같이정의되어있음 ( 3/ko/sqlmap-xml.html) 데이터베이스에서내부적으로생성한키를받는 JDBC getgeneratedkeys 메서드를사용하도록설정한다. default value : 'false' 이에해당설정을 false 로변경후발생하지않음 기설정은 Oracle 과 informix 내에서는오류가발생하지않음 MyBATIS 연동가이드 30 page of 61
31 부록 (Mybatis-Altibase 연동 ) Altibase_mybatis_sidu 예제를바탕으로 MyBatis 에서 ALTIBASE 와연동하는방법에대해좀더자세하게설명한다. 단, IDE 는 Eclipse 를사용한다. DB 테이블및시퀀스생성 DB 에다음의테이블과시퀀스를생성한다. create table users( user_no integer, user_name varchar(30), user_content varchar(200), reg_date date ); 프로젝트생성 Eclipse에서 altibase_mybatis_sidu 이라는프로젝트를생성한다. 1. 메뉴 File Java Project 클릭 2. Project name : 에 Altibase_mybatis_sidu 입력 3. Finish 버튼을클릭 MyBATIS 연동가이드 31 page of 61
32 패키지명명규칙 부록에서설명하고있는패키지명은기본적으로 com.altibase.sidu 를명명하여사용하고있는데이는일반적으로사용하는패키지분류법칙을가져와적용한것이며각각의성격은다음과같다. - com : 첫번째항목은프로젝트를이끄는그룹의성격을결정하는것으로 com 은 company 를의미한다. 만약소규모단체등이라면 org(organization) 를사용할것이다. - altibase : 두번째항목은자사의그룹또는사명을정해주는부분으로보통회사라면회사명이, 특정그룹이라면그룹명이들어간다. 현문서는 ALTIBASE 에서작성하였으므로 altibase 로명명하였다. - sidu : 세번째항목은실제이프로젝트의 artifact 구조를의미한다. 현재 Sample 은 DML 의일반적인명령 (Select/Insert/Delete/Update) 이므로 sidu 로명명하였다. Configuration 파일작성 1. ALTIBASE 연결을위한 property 들을정의한 properties 파일 (db.properties) 을작성한다. ( altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭하여 New File 을클릭한다. File name: 에 db.properties 을작성한다.) jdbc.driver=altibase.jdbc.driver.altibasedriver jdbc.url=jdbc:altibase:// :21020/mydb jdbc.username=sys jdbc.password=manager 2. Configuration 파일 (mybatis-config.xml) 에 ALTIBASE 와연동을위한 datasource 와 SqlMap 파일을설정한다. ( altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭하여 New File 을클릭한다. File name: 에 mybatisconfig.xml 을작성한다.) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//dtd Config 3.0//EN" " <configuration> <typealiases> <typealias type="com.altibase.sidu.model.uservo" alias="user" /> </typealiases> <environments default="development"> <environment id="development"> <transactionmanager type="jdbc" /> <datasource type="simple"> <property name="driver" value="${jdbc.driver" /> <property name="url" value="${jdbc.url" /> <property name="username" value="${jdbc.username" /> <property name="password" value="${jdbc.password" /> MyBATIS 연동가이드 32 page of 61
33 <property name="poolpingquery" value="select 1 from dual" /> </datasource> </environment> </environments> <mappers> <mapper resource="com/altibase/sidu/mapper/usermapper.xml" /> </mappers> </configuration> Mapper 파일작성 Users 테이블의 CRUD SQL 구문과 mapping 되는 method 들을정의한 Mapper 파일을작성한다.(Person.xml) Mapper 는 com.altibase.sidu.mapper Package 에작성하게된다. 1. altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭후 New Package 을클릭하여 com.altibase.sidu.mapper 라는신규패키지를생성한다. 2. 생성된신규패키지 (com.altibase.sidu.mapper) 에서마우스오른쪽버튼클릭후 New File 을클릭하여 File name: 에 UserMapper.xml 을작성한다. MyBATIS 연동가이드 33 page of 61
34 3. 다음의내용을 UserMapper.xml 에작성한다 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//dtd Mapper 3.0//EN" " <mapper namespace="com.altibase.sidu.mapper.usermapper"> <select id="selectuserdata" parametertype="integer" resulttype="user"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users WHERE user_no = #{userno </select> <select id="selectalluserdata" resulttype="user"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users </select> <insert id="insertuserdata" parametertype="user"> insert into users(user_no, user_name, user_content, reg_date) values(#{userno, #{username, #{usercontent, #{regdate) </insert> <update id="updateuserdata" parametertype="user"> MyBATIS 연동가이드 34 page of 61
35 update users set user_name = #{username, user_content = #{usercontent, reg_date = #{regdate where user_no = #{userno </update> <delete id="deleteuserdata" parametertype="user"> delete from users where user_no = #{userno </delete> </mapper> Application 에서 Configuration 의 insert, update, delete Method 를호출할때위의파일에정의되어있는 <insert>, <update>, <delete>, <select> 태그에정의되어있는 id 와일치하는 SQL 문들이자동으로수행이된다. Application 작성 1. users 테이블에대한 VO(Value Object) 객체인 UserVO 클래스 (UserVo.java) 를작성한다 altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭후 New Class 를클릭한다 Package: 에 com.altibase.sidu.model 를입력하고 Name: 에 UserVo 를입력한다. MyBATIS 연동가이드 35 page of 61
36 1-3. 다음의내용을 UserVo.java 파일에작성한다. package com.altibase.sidu.model; import java.io.serializable; import public class UserVo implements Serializable { private Integer userno; private String username; private String usercontent; private Date regdate; public Integer getuserno() { return userno; public void setuserno(integer userno) { this.userno = userno; public String getusername() { return username; public void setusername(string username) { this.username = username; public String getusercontent() { return usercontent; public void setusercontent(string usercontent) { this.usercontent = usercontent; public Date getregdate() { return regdate; public void setregdate(date regdate) { this.regdate = regdate; public String tostring() { return "user_no = " + this.userno + "\n" + "user_name = " + this.username + "\n" + "user_content = " + this.usercontent + "\n" + "reg_date = " + this.regdate; 2. DB 연결및필요한메소드를포함하는 MyBatisUtil.java 클래스를작성한다. MyBATIS 연동가이드 36 page of 61
37 2-1. altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭후 New Class 를클릭한다 Package: 에 com.altibase.sidu.util 을입력하고 Name: 에 MybatisUtil 을입력한다 다음의내용을 MybatisUtil.java 파일에작성한다 package com.altibase.sidu.util; import java.io.ioexception; import java.io.inputstream; import java.text.parseposition; import java.text.simpledateformat; import java.util.calendar; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import org.apache.ibatis.session.sqlsessionfactorybuilder; public class MybatisUtil { private static SqlSessionFactory sqlsessionfactory; private static SqlSession sqlsession; public static SqlSession getsqlsessionfactory() { if (sqlsessionfactory == null) { InputStream inputstream; try { inputstream = Resources.getResourceAsStream("mybatis- MyBATIS 연동가이드 37 page of 61
38 config.xml"); sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputStream); sqlsession = sqlsessionfactory.opensession(false); catch (IOException e) { throw new RuntimeException(e.getCause()); return sqlsession; public String NulltoStr(String str) { if (str == null) { str = ""; return str; public String getformatdate(string date, String originalformat, String wantformat) { java.util.date d = null; SimpleDateFormat dd = new SimpleDateFormat(originalformat); ParsePosition parse = new ParsePosition(0); d = dd.parse(date, parse); Calendar cal = Calendar.getInstance(); cal.settime(d); SimpleDateFormat sdf = new SimpleDateFormat(wantformat); String day = sdf.format(cal.gettime()); return day; 3. MybatisUtil 클래스로부터 SqlSession 객체를받아쿼리를수행하는클래스를작성한다. 예제에서는 DML 각각의처리에대한클래스를별도로선언하여처리하였다. 해당예제에서는 Select 에대한예시만설명한다. 3.1 altibase_mybatis_sidu 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭후 New Class 를클릭한다. 3.2 Package: 에 com.altibase.sidu.application 을입력하고 Name: 에 SiduSampleSelect 를입력한다. MyBATIS 연동가이드 38 page of 61
39 3.3 다음의내용을 SiduSampleSelect.java 파일에작성한다. package com.altibase.sidu.application; import java.sql.sqlexception; import java.util.list; import com.altibase.sidu.model.uservo; import com.altibase.sidu.util.mybatisutil; public class SiduSampleSelect { public UserVo SiduSelect(int user_no) { UserVo uservo = new UserVo(); try { String statement = "com.altibase.sidu.mapper.usermapper.selectuserdata"; uservo = MybatisUtil.getSqlSessionFactory().selectOne(statement, user_no); return uservo; catch (Exception e) { throw new IllegalArgumentException(e); public List<UserVo> SiduSelectList() throws SQLException { String statement = "com.altibase.sidu.mapper.usermapper.selectalluserdata"; List<UserVo> uservos = MybatisUtil.getSqlSessionFactory().selectList(statement); return uservos; MyBATIS 연동가이드 39 page of 61
40 4. 실제프로그램이수행되는 Main 클래스를 SiduMain.java 파일에작성한다. package com.altibase.sidu.application; import java.util.calendar; import java.util.list; import com.altibase.sidu.model.uservo; public class SiduMain { /** args */ public static void main(string[] args) { UserVo uservo = new UserVo(); int user_no = 1; int res_count = 0; try { // Insert 예제 uservo.setuserno(user_no); uservo.setusername("sidu_1"); uservo.setusercontent("sidu_content_1"); uservo.setregdate(calendar.getinstance().gettime()); SiduSampleInsert sidu_insert = new SiduSampleInsert(userVo); res_count = sidu_insert.siduinsert(); // Select 예제 SiduSampleSelect sidu_select = new SiduSampleSelect(); uservo = sidu_select.siduselect(user_no); System.out.println(userVo.toString()); // Insert 예제 uservo.setuserno(5); sidu_insert = new SiduSampleInsert(userVo); res_count = sidu_insert.siduinsert(); System.out.println("insert count = " + res_count); // Update 예제 uservo.setusername("sidu_5"); uservo.setusercontent("sidu_content_5"); uservo.setregdate(calendar.getinstance().gettime()); SiduSampleUpdate sidu_update = new SiduSampleUpdate(userVo); res_count = sidu_update.siduupdate(); System.out.println("update count = " + res_count); // Delete 예제 user_no = 5; SiduSampleDelete sidu_delete = new SiduSampleDelete(user_no); res_count = sidu_delete.sidudelete(); System.out.println("delete count = " + res_count); MyBATIS 연동가이드 40 page of 61
41 // Select All 예제 List<UserVo> uservos = sidu_select.siduselectlist(); for(int i=0; i<uservos.size(); i++) { uservo = uservos.get(i); System.out.println((i+1) + " 번째객체 "); System.out.println(userVo.toString()); // 동일한테스트를두번반복했을때, user_no 가 1 인데이터가 2 개가되어 select 만수행되고 // 프로그램이 Terminate 될수있어서 (SelectOne 메소드사용 ) user_no 가 1 인데이터도삭제해준다. user_no = 1; sidu_delete = new SiduSampleDelete(user_no); res_count = sidu_delete.sidudelete(); catch(exception e) { e.getstacktrace(); 관련 JAR 파일추가 Altibase.jar 와 mybatis jar 파일을추가한다. altibase_mybatis_sidu 프로젝트에서마우스오른쪽버튼클릭하여 Properties 를클릭 Java Build Path Libraries 에서 Add External JARS 를클릭하여 Altibase.jar 와 mybatis jar 파일을추가한다. MyBATIS 연동가이드 41 page of 61
42 Application 실행 altibase_mybatis_sidu 프로젝트를실행한다. altibase_mybatis_sidu 프로젝트를클릭한후메뉴에서 Run 을실행하거나 com.altibase.sidu.application 패키지의 SiduMain.java 클래스를더블클릭하여파일을연후에 Run 을실행한다. MyBATIS 연동가이드 42 page of 61
43 부록 2(Spring-Mybatis-Altibase 연동 ) altibase_mybatis_spring 예제를바탕으로 Spring-MyBatis-ALTIBASE 와연동하는방법에대해좀더자세하게설명한다. 단, IDE 는 Eclipse 를사용한다. DB 테이블및시퀀스생성 DB 에다음의테이블과시퀀스를생성한다. create table users( user_no integer, user_name varchar(30), user_content varchar(200), reg_date date ); Spring 설치 Spring 을사용하려면 STS(STS, SpringSource Tools Suite) 를설치해야한다. STS 란이클립스에서 Spring 으로개발시에편리하게클립에서스프링으로개발할때편리를제공하는플러그인으로아래목록중 Eclipse 의 Version 에맞게설치한다. MyBATIS 연동가이드 43 page of 61
44 Maven 설치 - Maven 은 Apache Software Foundation 에서개발되고있는소프트웨어프로젝트관리툴이다. Maven 은 Project Object Model(POM) 이라는것에기초를두어프로젝트의빌드, 테스트, 도큐멘테이션등프로젝트라이프사이클전체를관리할수있는툴이며 Spring-Mybatis-Altibase 연동테스트소스도 Maven 을적용하여관리하게되었다. 해당 part 는 Maven 의설치과정을설명한다. 1. Maven 파일다운로드 - 에서 binary zip 파일을다운받는다 년 10 월현재최신버전은 apache-maven bin.zip) 2. 메이븐환경설정 - 압축을해제한후에윈도우환경변수 ( 바탕화면 -> 내컴퓨터 -> 속성 -> 고급 -> 환경변수 ) 에서 MAVEN_HOME(c:\maven) 을사용자변수에추가하고, PATH 설정에 maven binary path 를포함시킨다. - 윈도우에서시작 -> 실행 -> cmd 입력후도스창뜨면 mvn version 입력하여버전이뜨면 OK MyBATIS 연동가이드 44 page of 61
45 3. eclipse 에서 maven 다운로드 - eclipse 의 Help->Eclipse Marketplace 를클릭하여 STS 를다운받는것과같이 maven 을다운로드받는다. 4. 압축을해제한 maven 을 eclipse 에설정한다. - windows -> preference -> Maven -> Installatios 아래 browse 클릭하여 C:\maven\conf\settings.xml 경로를잡아주고 Apply. MyBATIS 연동가이드 45 page of 61
46 프로젝트생성 Eclipse 에 STS 를설치하면 Spring Template Project 의 Spring 기반프로젝트가생성이가능하다. 다음의단계를거쳐프로젝트를생성한다. 1. 메뉴 File-New-Spring Template Project 를클릭하여 Spring MVC Project 를생성 2. Project name : 에 altibase_mybatis_spring, top-level package 에 com.altibase.test 입력 (Spring 은프로젝트생성시 default 패키지명을필수로입력해야한다.) 3. Finish 버튼을클릭 MyBATIS 연동가이드 46 page of 61
47 패키지명명규칙 부록에서설명하고있는패키지명은기본적으로 com.altibase.test 를명명하여사용하고있는데이는일반적으로사용하는패키지분류법칙을가져와적용한것이며각각의성격은다음과같다. - com : 첫번째항목은프로젝트를이끄는그룹의성격을결정하는것으로 com 은 company 를의미한다. 만약소규모단체등이라면 org(organization) 를사용할것이다. - altibase : 두번째항목은자사의그룹또는사명을정해주는부분으로보통회사라면회사명이, 특정그룹이라면그룹명이들어간다. 현문서는 ALTIBASE 에서작성하였으므로 altibase 로명명하였다. - test : 세번째항목은실제이프로젝트의 artifact 구조를의미한다. 현재 Samle 은 DML 의일반적인명령 (Select/Insert/Delete/Update) 이므로 test 로명명하였다. ApplicationContext 파일작성 스프링코드작성에서가장먼저해야할것은 AppilcationContext 라고불리는스프링빈설정파일을작성하는것이다. 아래는스프링빈설정파일의내역이다. <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xmlns:context=" xmlns:tx=" xmlns:p=" xsi:schemalocation=" <description>example configuration to get you started.</description> <!-- 지정된패키지에서빈을탐색 --> <context:component-scan base-package="com.altibase.test.service" /> <!-- Apache DBCP 를이용한 ALTIBASE DB 접속방법 - Apache DBCP 라초기에 Session Pool 을붙이는프로퍼티가존재하며물론최초연결시에 initialsize 만큼 Session 을만들어두는것도가능하다. --> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> <property name="url" value="jdbc:altibase:// :21020/mydb" /> <property name="username" value="test" /> <property name="password" value="test" /> <property name="initialsize" value="10" /> <property name="minidle" value="25" /> <property name="maxidle" value="30" /> <property name="maxactive" value="100" /> MyBATIS 연동가이드 47 page of 61
48 <property name="validationquery" value="select 1 from dual" /> <property name="testonborrow" value="false" /> </bean> <!-- 트랜잭션사용 --> <bean id="txmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource" /> </bean> <!-- 트랜잭션 annotation 정의 --> <tx:annotation-driven transaction-manager="txmanager"/> <!-- SqlSessionFactory 정의 --> <!-- typealiasespackage 속성에는맵퍼정의파일 (XML) 내의 SQL 문장에서참조하는도메인클래스가포함된패키지를지정 --> <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"> <property name="datasource" ref="datasource" /> <property name="typealiasespackage" value="com.altibase.test.domain" /> </bean> <!-- 맵퍼인터페이스와맵퍼정의파일에의해생성된맵퍼클래스를빈에주입할수있도록함 --> <bean class="org.mybatis.spring.mapper.mapperscannerconfigurer"> <property name="basepackage" value="com.altibase.test.persistence" /> </bean> </beans> MyBATIS 연동가이드 48 page of 61
49 Mapper 파일작성 Users 테이블의 CRUD SQL 구문과 mapping 되는 method 들을정의한 Mapper 파일을작성한다. Spring 의방식을따라야하기때문에의존적주입 (Dependency Injection) 방식을사용하게된다.(UserMapper.xml, UserMapper.java) Mapper 는 com.altibase.test.persistence Package 에작성하게된다. 1. altibase_mybatis_spring 프로젝트 src 디렉토리에서마우스오른쪽버튼클릭후 New Package 을클릭하여 com.altibase.test.persistence 라는신규패키지를생성한다. 2. 생성했던신규패키지 (com.altibase.test.persistence) 에마우스오른쪽버튼클릭후 New Interface 를클릭하여 UserMapper.java 파일을생성한다 3. 생성한 Interface 파일의내용을다음과같이작성한다. package com.altibase.test.persistence; import java.util.list; import com.altibase.test.domain.uservo; public interface UserMapper { public List<UserVo> getalluser(); public UserVo getuserbyno(int user_no); public Integer insertuserdata(uservo uservo); public Integer deleteuserbyno(int user_no); public Integer updateuserbyno(uservo uservo); MyBATIS 연동가이드 49 page of 61
50 4. 생성된신규패키지 (com.altibase.test.persistence) 에서마우스오른쪽버튼클릭후 New File 을클릭하여 File name: 에 UserMapper.xml 을작성한다. 5. 다음의내용을 UserMapper.xml 에작성한다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//dtd Mapper 3.0//EN" " <mapper namespace="com.altibase.test.persistence.usermapper"> <select id="getalluser" parametertype="integer" resulttype="uservo"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users WHERE user_no = #{userno </select> <select id="getuserbyno" resulttype="uservo"> SELECT user_no as userno, user_name as username, user_content as usercontent, reg_date as regdate FROM users </select> <insert id="insertuserdata" parametertype="uservo"> insert into users(user_no, user_name, user_content, reg_date) values(#{userno, #{username, #{usercontent, #{regdate) </insert> MyBATIS 연동가이드 50 page of 61
51 <update id="updateuserbyno" parametertype="uservo"> update users set user_name = #{username, user_content = #{usercontent, reg_date = #{regdate where user_no = #{userno </update> <delete id="deleteuserbyno" parametertype="integer"> delete from users where user_no = #{userno </delete> </mapper> 해당방식은 Spring 만의방식으로의존적주입 (Dependency Injection) 의방식으로처리하고있다. Application 에서는인터페이스에정의되어있는메소드를통하여 SQL 문을처리한다. Dependency Injection Dependency Injection( 줄여서 DI) 는직역하면의존적주입이다. Dependency Injection 이란 Gof 의디자인패턴에있는기법으로, 실제사용자가사용하게될메소드를인터페이스로지정하여실제로직과분리하여처리하는기법이다. 이렇게처리하게되면사용자는인터페이스의메소드만이용하더라도구현부는나중에주입을통해해결하므로획기적인분업과동시에구현클래스를쉽게교체할수있다는장점을얻게된다. Application 작성 1. users 테이블에대한 VO(Value Object) 객체인 UserVO 클래스 (UserVo.java) 를작성한다 altibase_mybatis_spring 프로젝트의 src/main/java 디렉토리에서마우스오른쪽버튼클릭후 New Class 를클릭한다 Package: 에 com.altibase.test.domain 을입력하고 Name: 에 UserVo 를입력한다. MyBATIS 연동가이드 51 page of 61
52 1-3. 다음의내용을 UserVo.java 파일에작성한다. package com.altibase.test.domain; import java.io.serializable; import public class UserVo implements Serializable { private Integer userno; private String username; private String usercontent; private Date regdate; public UserVo() { public UserVo(Integer userno, String username, String usercontent, Date regdate) { this.userno = userno; this.username = username; this.usercontent = usercontent; this.regdate = regdate; public Integer getuserno() { return userno; public void setuserno(integer userno) { this.userno = userno; MyBATIS 연동가이드 52 page of 61
53 public String getusername() { return username; public void setusername(string username) { this.username = username; public String getusercontent() { return usercontent; public void setusercontent(string usercontent) { this.usercontent = usercontent; public Date getregdate() { return regdate; public void setregdate(date regdate) { this.regdate = public String tostring() { return "User [no=" + userno + ", name=" + username + ", content=" + usercontent + ", date=" + regdate + "]"; 2. 실제쿼리를수행하는인터페이스및주입클래스파일을작성한다 altibase_mybatis_spring 프로젝트의 src/main/java 디렉토리에서마우스오른쪽버튼클릭후 New Interface 를클릭한다 Package: 에 com.altibase.test.service 를입력하고 Name: 에 UserService 를입력한다. MyBATIS 연동가이드 53 page of 61
54 2-3. 다음의내용을 UserService.java 파일에작성한다. package com.altibase.test.service; import java.util.list; import com.altibase.test.domain.uservo; public interface UserService { public List<UserVo> getalluser(); public UserVo getuserbyno(int user_no); public Integer insertuserdata(uservo uservo); public Integer deleteuserbyno(int user_no); public Integer updateuserbyno(uservo uservo); 2-4. 생성했던신규패키지 (com.altibase.test.service) 에마우스오른쪽버튼클릭후 New Class 를클릭하여실제로직을처리하는 UserServiceImpl.java Class 파일을생성한다. MyBATIS 연동가이드 54 page of 61
55 2-5. 다음의내용을 UserMapperImple.java 파일에작성한다 package com.altibase.test.service; import java.util.list; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service; import com.altibase.test.domain.uservo; import public class UserServiceImpl implements UserService private UserMapper usermapper; private Integer res_count; public List<UserVo> getalluser() { List<UserVo> uservos = usermapper.getalluser(); return uservos; public UserVo getuserbyno(int user_no) { UserVo uservo = usermapper.getuserbyno(user_no); return uservo; public Integer insertuserdata(uservo uservo) { res_count = usermapper.insertuserdata(uservo); return res_count; public Integer deleteuserbyno(int user_no) { MyBATIS 연동가이드 55 page of 61
56 res_count = usermapper.deleteuserbyno(user_no); return res_count; public Integer updateuserbyno(uservo uservo) { res_count = usermapper.updateuserbyno(uservo); return res_count; 3. 실제프로그램이수행되는 Main 클래스를 Main.java 파일에작성한다. package com.altibase.test; import java.util.calendar; import org.springframework.context.applicationcontext; import org.springframework.context.support.classpathxmlapplicationcontext; import com.altibase.test.domain.uservo; import com.altibase.test.service.userservice; public class Main { private static UserService userservice; public static void main(string[] args) { // TODO Auto-generated method stub int res_count = 0; ApplicationContext applicationcontext = new ClassPathXmlApplicationContext("META-INF/spring/ApplicationContext.xml"); userservice = (UserService)applicationContext.getBean("userService"); UserVo uservo = new UserVo(); // Insert 샘플 uservo.setuserno(1); uservo.setusername("psy"); uservo.setusercontent("psy_content"); uservo.setregdate(calendar.getinstance().gettime()); res_count = userservice.insertuserdata(uservo); System.out.println("insert count = " + res_count); // Select 샘플 uservo = userservice.getuserbyno(1); System.out.println("no = " + uservo.getuserno()); System.out.println("name = " + uservo.getusername()); System.out.println("content = " + uservo.getusercontent()); System.out.println("date = " + uservo.getregdate()); // Update 샘플 uservo.setusername("updated_psy"); uservo.setusercontent("updated_psy_content"); res_count = userservice.updateuserbyno(uservo); System.out.println("update count = " + res_count); MyBATIS 연동가이드 56 page of 61
57 // Delete 샘플 res_count = userservice.deleteuserbyno(uservo.getuserno()); System.out.println("delete count = " + res_count); 관련 JAR 파일추가 Jar 를추가하는방법은두가지이다. - Maven 에의한라이브러리추가 - 기존방식대로 (properties-java Build Path 의 Add External JARS) 의라이브러리추가 샘플소스는 Maven 에의한라이브러리관리방법을선택하여작성되었으며, 두번째방법인기존방식은위에서도설명한바있어본장에선 Maven 에의한라이브러리관리방법을설명한다. Maven 을설치하여 Spring Template Project 를생성하면 pom.xml 이라는파일이생성되는데, 해당파일이라이브러리를관리해주는파일이다. pom.xml 파일에서 library 를추가하는방법은두가지이다. - pom.xml 탭에서태그를직접입력하여 library 추가 - Dependencies 탭에서 Add 버튼으로 library 추가 태그를직접입력하는방법은, 위의탭중 pom.xml 탭을눌러나타나는 xml 파일에직접입력하여 library 를추가하는방법이며아래화면과같이추가한다. ( 테스트에사용한 library 는 Apache common dbcp library 이다.) MyBATIS 연동가이드 57 page of 61
58 추가한후에 xml 파일을저장하면 Maven Dependecies 에 Library 가추가된것을확인할수있다. Dependencies 탭에서 Add 버튼으로 library 추가하는방법은다음과같은단계를거쳐추가가가능하다. 1) pom.xml 파일에서 dependencies-add 버튼을클릭하면다음의창이뜨게된다. 해당창의 Enter groupid, artifactid or sha1 prefix or pattern (*) : 칸에추가하고싶은 library의이름을입력하게되면아래와같이입력한이름에대한라이브러리를보여준다. MyBATIS 연동가이드 58 page of 61
59 2) Search Results 에나타난 Library 를클릭하면해당 Library 에대한버전이나타나게되고필요한버전을클릭한후 OK 버튼을클릭하면해당 Library 가추가된다. 라이브러리가추가된것을확인할수있다. MyBATIS 연동가이드 59 page of 61
60 파일을저장하면변경된내역이반영되면서 Library 가추가된다. 마지막에 Library 가추가된것을보면 commons-dbcp 말고 commons-pool 도같이추가가되었는데, dependencies 탭을통해추가하게되면이와같이관련된 Library 도같이추가해준다. Application 실행 altibase_mybatis_spring 프로젝트를실행한다. altibase_mybatis_spring 프로젝트를클릭한후메뉴에서 Run 을실행하거나 com.altibase.test 패키지의 Main.java 클래스를더블클릭하여파일을연후에 Run 을실행한다. MyBATIS 연동가이드 60 page of 61
표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인
표준프레임워크로구성된컨텐츠를솔루션에적용하는것에문제가없는지확인 ( S next -> generate example -> finish). 2. 표준프레임워크개발환경에솔루션프로젝트추가. ( File -> Import -> Existring Projects into
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationALTIBASE 사용자가이드 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 informationALTIBASE 사용자가이드 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 informationALTIBASE 사용자가이드 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 informationSpring 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- 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슬라이드 1
전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new
More informationConnection 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슬라이드 1
- 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.
More informationInterstage5 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쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More informationSpring 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슬라이드 1
Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능
More informationJDBC 소개및설치 Database Laboratory
JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }
More informationALTIBASE 사용자가이드 Templete
Real Alternative DBMS ALTIBASE, Since 1999 Hibernate 연동가이드 2014.01 Copyright c 2000~2010 ALTIBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference 2010-11 snkim
More information@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 informationALTIBASE 사용자가이드 Templete
Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change
More information을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을
안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경
More information* 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 informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
More information목차 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<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 information10.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 informationEclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일
Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information교육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 informationI 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 informationAPI 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 informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationMyBatis
MyBatis 목차 3 1.1 mybatis 시작하기 4 1.1.1 데이터베이스프로그래밍 4 1.1.2 데이터매퍼 MYBATIS 5 1.1.3 이책은구성은 7 1.1.4 정리 7 1.2 mybatis 가장간단히실행하기 8 1.2.1 필수구성요소 8 1.2.2 MYBATIS 설정파일 8 1.2.3 설정파일로드하기 9 1.2.4 데이터조회하기 9 1.2.5 데이터입력하기
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
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)
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 information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
More information1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과
1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas
More informationSQL 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 information1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아
LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml
More information슬라이드 1
Gradle 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 소개 특징 Gradle (http://www.gradle.org) 소프트웨어빌드자동화도구 라이선스 Apache License v2.0 Gradle 을통해소프트웨어패키지나프로젝트의빌드, 테스팅, 퍼블리슁, 배포등을자동화할수있다. Ant 의유연성과기능을
More information슬라이드 1
SW 개발도구연계 Jenkins - Redmine - Mylyn 목차 Intro Mylyn - Redmine 연계 Mylyn - Jenkins 연계및빌드실행 Mylyn에서 Redmine 일감처리 Intro 연계도구 웹기반의프로젝트관리도구 한글화가잘되어있어사용저변이넓음 플러그인을통해다양한도구와연계가능 Eclipse 용 ALM(Application Lifecycle
More informationMicrosoft 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 informationMicrosoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with
More informationSpring 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표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1
표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 Index 1. 표준프레임워크 EGOVCI 팩키지설치... 3 1.1 개요... 3 1.2 EGOVCI 압축풀기... 3 1.3 EGOVCI 시스템구성... 3 1.4 CI 시스템구동 (START/STOP)... 4 2. NEXUS 설정정보... 6 2.1 NEXUS 서버구동
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More informationData Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager
Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1
More information목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE
ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More informationarcplan Enterprise 6 Charting Facelifts
SQL Server Analysis Services Tip 잘레시아 Copyright c 2010 Zalesia Co., Ltd. Agenda I II SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 2 Copyright c 2010 Zalesia Co., Ltd. 3 STEP1: Sales 큐브를위해데이터를미리준비한다.
More informationrmi_박준용_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 informationInsertColumnNonNullableError(#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 informationFacebook API
Facebook API 2조 20071069 임덕규 20070452 류호건 20071299 최석주 20100167 김민영 목차 Facebook API 설명 Android App 생성 Facebook developers App 등록 Android App Facebook SDK 추가 예제 Error 사항정리 Facebook API Social Plugin Facebook
More informationFileMaker 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 informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationPowerPoint 프레젠테이션
Software Verification Junit, Eclipse 및빌드환경 Team : T3 목차 Eclipse JUnit 빌드환경 1 Eclipse e 소개 JAVA 를개발하기위한통합개발환경 주요기능 Overall 빌드환경 Code edit / Compile / Build Unit Test, Debug 특징 JAVA Code를작성하고이에대한 debugging
More information목차 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 informationDBMS & 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윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More informationPowerPoint 프레젠테이션
실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)
More informationAnalytics > 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<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationSecure Programming Lecture1 : Introduction
Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$
More information4S 1차년도 평가 발표자료
모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components
More informationMasoJava4_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내장서버로사용. 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단계
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 informationFileMaker 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 informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More informationMicrosoft PowerPoint - 10Àå.ppt
10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어
More information4 주차 - 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개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.
설치및환경설정 JDBC 접속세션구분 / 확인 2013. 11. 01 개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다. 사용하기 JEUS 에서설정방법
More informationC++ 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제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
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< 목차 > 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 informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More informationPowerPoint 프레젠테이션
@ 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 informationFileMaker 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슬라이드 1
Subclipse 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 도구명 Subclipse (http://subclipse.tigris.org/) 라이선스 Eclipse Public License v1.0 소개 Subversion( 이하 svn) 용 Eclipse 플러그인 SVN 을만든 Tigris.org 에서만든클라이언트툴 Java
More information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More informationALTIBASE HDB Patch Notes
ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake
More informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More information07 자바의 다양한 클래스.key
[ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,
More informationApache Ivy
JBoss User Group The Agile Dependency Manager 김병곤 fharenheit@gmail.com 20100911 v1.0 소개 JBoss User Group 대표 통신사에서분산컴퓨팅기반개인화시스템구축 Process Designer ETL, Input/Output, Mining Algorithm, 통계 Apache Hadoop/Pig/HBase/Cassandra
More informationMobile 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 informationORANGE 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 informationJAVA 플랫폼 개발 환경 구축 및 활용
페이지 1 / 9 작성일 : 2011/7/30 JDK Download Eclipse IDE 구축및홗용 For Java JDK Download JDK Setting the Path Eclipse Download Eclipse Font Setting Eclipse API Setting > 1. http://www.oracle.com/index.html
More informationMyBatis
MyBatis 목차 3 1.1 mybatis 웹애플리케이션개발하기 4 1.1.1 설치하기 4 1.1.2 MYBATIS 설정파일 5 1.1.3 매퍼 XML과매퍼애노테이션 13 1.1.4 트랜잭션관리 16 1.1.5 좀더복잡한매핑규칙정의 17 1.MyBatis 시작하기 1.1 mybatis 웹애플리케이션개발하기 이전장에서는간단한 mybatis 애플리케이션을만들었고,
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationNTD36HD Manual
Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationIntro 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단계
본문서에서는 Tibero RDBMS 에서제공하는 Oracle DB Link 를위한 gateway 설치및설정방법과 Oracle DB Link 사용법을소개한다. Contents 1. TIBERO TO ORACLE DB LINK 개요... 3 1.1. GATEWAY 란... 3 1.2. ORACLE GATEWAY... 3 1.3. GATEWAY 디렉터리구조...
More informationSpring
Spring MVC 프로젝트생성 2015 Web Service Computing 일반적인스프링의정의 스프링의정의 자바엔터프라이즈개발을편하게해주는오픈소스경량급애플리케이션프레임워크 스프링의기원 로드존슨 (Rod Johnson) 이라는유명 J2EE 개발자가출간한 Expert One-on- One J2EE Design and Development 이라는제목의책에소개된예제샘플
More information13주-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 informationRemote UI Guide
Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................
More informationJMF2_심빈구.PDF
JMF JSTORM http://wwwjstormpekr Issued by: < > Document Information Document title: Document file name: Revision number: Issued by: JMF2_ doc Issue Date: Status: < > raica@nownurinet
More information슬라이드 1
TortoiseSVN 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 Tortoise SVN (http://tortoisesvn.net) 라이선스 GNU GPL v2.0 소개 Subversion 를통해서소스버전관리를할수있게하는클라이언트도구 특징 Windows Explorer 에서곧바로 Subversion 를사용하여버전컨트롤가능
More information