Background Image
조회 수 19123 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
CUBRID와 MyBATIS를 간단하게 연동하는 가이드 입니다.

1. MyBATIS란?
 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크로써 JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거합니다. MyBATIS는 데이터베이스 레코드에 원시타입(primitive type) Map 인터페이스 그리고 자바POJO 를 설정하고 매핑하기 위해 XML 과 애노테이션을 사용할 수 있습니다.

2. MyBATIS 라이브러리 준비
다음 URL로 접속하여 mybatis-X.X.X.zip 파일을 다운
jar_down.png

다운로드 받은 파일에서 mybatis-X.X.X.jar 파일을 압축해제하여 사용하시면 됩니다.

jar_zip.png


3. DB Schema
demodb의 code 테이블을 사용합니다.
 csql> ;sc code
=== <Help: Schema of a Class> ===

  <Class Name>
        code
  <Attributes>
        s_name               CHARACTER(1)
        f_name               CHARACTER VARYING(6)

Committed.

4. SqlMapConfig.xml 파일을 생성합니다.
SqlMapConfig.png

(1) <properties> : SqlMapConfig.xml 파일 내부에서 사용될 프로퍼티 리소스를 지정하는 태그로써 여기에서는 db.properties 파일을 사용하였습니다.
  - db.properties : 해당 파일을 SqlMapConfig.xml 과 같은 경로에 작성합니다.
db.properties.png

(2) <typeAliases> : 자바 타입에 대한 별칭을 부여하는 태그로써, 여기에서는 CodeVO라는 클래스를 codeVo라는 별칭으로 사용하였습니다. (package화 되어 있을 경우, 별칭을 사용하여 간결하게 표현할 수 있는 이점이 있습니다)
  - CodeVo.java : demodb.code 테이블의 컬럼에 해당하는 변수들을 저장하는 Value Object로써,  SqlMapConfig.xml 파일과 같은 경로에 작성합니다.
codeVo.png

(3) <environments> : MyBATIS에서는 해당 태그를 이용하여 하나 이상의 DB 연결 환경을 설정할 수 있습니다. 여기에서는 하나의 환경(하나의 DB)만을 사용하도록 설정하였습니다.
  - <environment id=”development”> : MyBATIS에서 development라는 아이디를 가진 환경을 설정
  - <transactionManager type=”JDBC”> : JDBC 드라이버를 통해 트랜잭션을 관리하도록 설정
  - <dataSource type="POOLED"> : DataSource에 풀링이 적용된 JDBC 커넥션을 사용하도록 설정
  - <property> : 위의 db.properties 파일의 속성들을 매핑시키는 태그

(4) <mappers> : SQL 구문이 정의되어 있는 설정 파일을 찾도록 지정하는 태그로써 resource, url, class, name 형태의 설정 파일들을 사용할 수 있습니다.


5. sqlMapper.xml 파일 작성
MyBATIS의 가장 큰 장점인 매핑을 통해 SQL을 수행하는 설정파일 입니다. codeVo는 위의 SqlMapConfig.xml에서 별칭을 사용하였던 CodeVo.java 클래스 입니다. MyBATIS에서는 SQL을 수행한 결과를 자동으로 매핑시켜줍니다.
sqlMapper.png

(1) <mapper namespace=”demo”> : 해당 mapper의 네임스페이스를 지정하는 태그입니다.

(2) <select> : select 구문을 수행하는 태그로써 수행한 결과를 codeVo 객체에 자동으로 매핑하여 리턴합니다. 주의할 점은 테이블의 컬럼 이름과 codeVo에 있는 변수의 이름이 일치해야 합니다. 호출시 namespace.id 형태로 구분합니다.

(3) <insert> : insert 구문을 수행하는 태그로써 파라미터로 넘어온 codeVo 객체를 자동으로 s_name, f_name에 매핑하여 insert를 수행합니다. 파라미터는 #{variable_name} 형태로 사용하시면 됩니다.

(4) <update> : update 구문을 수행하는 태그로써 위의 insert와 구조는 동일합니다.

(5) <delete> : delete 구문을 수행하는 태그로써 insert와 구조는 동일합니다. 여기에서는 String 타입의 s_name 이라는 파라미터를 전달받아 delete를 수행하였습니다.


6. SqlSessionFactory 객체를 생성하여 MyBATIS 사용하기
SqlSessionFactory는 SqlSessionFactoryBuilder를 통해 xml 설정 파일로 객체화 할 수 있습니다.
main1.png

  - Main.java 파일은 위에 생성한 파일들과 동일한 위치에 작성하시면 됩니다.
  - Reader 클래스를 통해 SqlMapConfig.xml 파일을 불러와서 SqlSessionFactory 객체를 생성합니다.


<select method : showSelect()>
main2.png


  - Main.java 클래스 내부에 작성된 MyBATIS를 통해 select를 수행하는 메소드 입니다.
  - SqlSession은 DB에 대해 SQL 명령어를 실행하기 위해 필요한 모든 메소드를 가지고 있는 객체로써 SqlSessionFactory 객체를 통해 생성합니다.
  - SqlSession에서 selectList() 메소드를 사용하여 list 형태로 레코드셋을 리턴 받으며, sqlMapper.xml에 작성되어 있는 namespace.id 의 값을 문자열 파라미터로 전달하여 해당 select를 수행합니다.
  - CUBRID는 select 역시 하나의 트랜잭션으로 처리하기 때문에 session.commit()을 통해 명시적으로 commit을 수행합니다.
  - SQL을 모두 수행하고 난 뒤 해당 SqlSession을 닫아줍니다.
  - select, insert, update, delete 모두 JAVA에서 작동 방식은 같습니다.


<insert method : insertCode(CodeVo vo) & update method : updateCode(CodeVo vo)>
main3.png


<delete method : deleteCode(String s_name) >
main4.png


7. Main.java의 main 메소드
main5.png
  - 위에서 작성한 select, insert, update, delete를 순차적으로 수행하는 main 메소드 입니다.


8. MyBATIS 라이브러리를 클래스패스에 포함시켜 컴파일을 합니다.
 [seunghun@newTest3 MyBATIS]$ ls -lrt
합계 724
-rw-rw-r-- 1 seunghun seunghun    646  1월 23 14:37 sqlMapper.xml
-rw-rw-r-- 1 seunghun seunghun    127  1월 23 14:37 db.properties
-rw-rw-r-- 1 seunghun seunghun    780  1월 23 14:37 SqlMapConfig.xml
-rw-rw-r-- 1 seunghun seunghun   2615  1월 23 14:37 Main.java
-rw-rw-r-- 1 seunghun seunghun    325  1월 23 14:37 CodeVo.java
-rw-rw-r-- 1 seunghun seunghun 714073  1월 23 14:37 mybatis-3.2.8.jar

[seunghun@newTest3 MyBATIS]$ javac -cp .:mybatis-3.2.8.jar *.java

[seunghun@newTest3 MyBATIS]$ ls -lrt
합계 732
-rw-rw-r-- 1 seunghun seunghun    646  1월 23 14:37 sqlMapper.xml
-rw-rw-r-- 1 seunghun seunghun    127  1월 23 14:37 db.properties
-rw-rw-r-- 1 seunghun seunghun    780  1월 23 14:37 SqlMapConfig.xml
-rw-rw-r-- 1 seunghun seunghun    325  1월 23 14:37 CodeVo.java
-rw-rw-r-- 1 seunghun seunghun 714073  1월 23 14:37 mybatis-3.2.8.jar
-rw-rw-r-- 1 seunghun seunghun   2470  1월 23 14:39 Main.java
-rw-rw-r-- 1 seunghun seunghun    538  1월 23 14:39 CodeVo.class
-rw-rw-r-- 1 seunghun seunghun   2946  1월 23 14:39 Main.class


9. Main.class 파일을 실행합니다.
 [seunghun@newTest3 MyBATIS]$ java -cp .:/home/seunghun/CUBRID/jdbc/cubrid_jdbc.jar:mybatis-3.2.8.jar Main


10. 수행 결과
 SELECT
s_name  f_name
---------------
X       Mixed
W       Woman
M       Man
B       Bronze
S       Silver
G       Gold

INSERT - [s_name : C, f_name : CUBRID]
s_name  f_name
---------------
X       Mixed
W       Woman
M       Man
B       Bronze
S       Silver
G       Gold
C       CUBRID

UPDATE - [s_name : C, f_name : DBMS]
s_name  f_name
---------------
X       Mixed
W       Woman
M       Man
B       Bronze
S       Silver
G       Gold
C       DBMS

DELETE - [s_name : C]
s_name  f_name
---------------
X       Mixed
W       Woman
M       Man
B       Bronze
S       Silver
G       Gold

[seunghun@newTest3 MyBATIS]$





List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
146 기타 CUBRID Migration방법(by unloaddb & loaddb) 주현 2015.07.01 21830
145 기타 콘솔에서 마이그레이션 하기. file 권호일 2015.06.19 13427
144 PHP CUBRID HA 환경에서 Apache-PHP 설정 가이드 이용미 2015.06.16 10661
143 기타 CUBRID isolation level & Dirty Read 정만영 2015.05.29 11310
142 Windows Windows 에 설치 된 JRE 설치 위치 확인 하기. file 성진 2015.05.28 12566
» Java CUBRID와 MyBATIS 빠르게 연동하기 file 김승훈 2015.05.07 19123
140 Linux CUBRID Linux 부팅시 자동시작 서비스 설정 방법 정만영 2013.09.16 25454
139 PHP phpize를 이용한 PHP 모듈 연동 방법(CUBRID2008 R4.3 버전) file 이용미 2013.05.16 20853
138 PHP Apache, PHP 설치 방법 file 이용미 2013.05.16 41246
137 기타 HA 환경 구성 시 데이터 복제 지연이 발생하는 경우 ECHO(7) port를 확인하자. 손승일 2012.11.29 26440
136 ODBC/OLEDB VB에서 CUBRID ODBC/OLEDB 사용하는 방법 및 샘플코드. file seongjoon 2012.06.30 26917
135 Java CUBRID와 Oracle의 Clob 타입 사용 방법 비교. seongjoon 2012.06.30 54547
134 Install CUBRID기반으로 XE 운영하기 – 설치가이드 file cubebridge 2012.04.13 30929
133 기타 select .. for update 처리를 위한 Stored Procudure 등록 및 사용법 남재우 2011.12.10 24870
132 Install LINUX CUBRID 4.0 매니저 설치방법 file 정만영 2011.07.19 23653
131 Install CUBRID Ubuntu Launchpad Installation 방법 file 정만영 2011.07.19 29604
130 기타 자주 발생하는 큐브리드(cubrid) 에러 메시지 정리 admin 2011.07.14 81363
129 기타 [주의사항] CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 admin 2011.07.14 52550
128 기타 CUBRID 매니저 R3.1에서 웹호스팅 서버의 CUBRID R2.1 접속하는 방법 (큐브리드 매니저에서 다른 버전의 큐브리드 서버 접속 방법) file admin 2011.07.14 31507
127 기타 동시 접속자에 따른 파라미터 설정 admin 2011.07.14 25680
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales