Background Image
조회 수 17708 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
» Java CUBRID와 MyBATIS 빠르게 연동하기 file 김승훈 2015.05.07 17708
21 Windows Windows 에 설치 된 JRE 설치 위치 확인 하기. file 성진 2015.05.28 11521
20 기타 CUBRID isolation level & Dirty Read 정만영 2015.05.29 10501
19 PHP CUBRID HA 환경에서 Apache-PHP 설정 가이드 이용미 2015.06.16 10429
18 기타 콘솔에서 마이그레이션 하기. file 권호일 2015.06.19 12778
17 기타 CUBRID Migration방법(by unloaddb & loaddb) 주현 2015.07.01 10868
16 Linux 가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 file 이경오 2015.07.14 12346
15 기타 알고 보면 쉬운 cubrid lockdb 유틸리티 file 김승훈 2015.12.08 9169
14 기타 CUBRID Migration Toolkit을 이용한 단계별 마이그레이션 진행 방법 file 진우진 2015.12.15 7572
13 Linux 리소스를 제한(limits.conf) 하여 DB서버를 관리하자 1 주현 2015.12.31 15076
12 기타 데이터 확인에 정규표현식을 사용 해 보자. 성진 2016.03.01 8991
11 기타 CSQL 인터프리터 사용방법 정만영 2016.03.03 10148
10 기타 PyCharm을 이용한 CUBRID, Django 연동 가이드 file 진우진 2016.04.11 7474
9 Java CUBRID에서 Java AddBatch 사용 엄기호 2016.06.28 6995
8 튜닝 LIMIT절을 사용하여 SQL문을 간결하게 작성하고, 부분범위 처리를 유도하자. 권호일 2016.06.29 11915
7 Java tomcat8.0(DBCP2)과 CUBRID 연동하기 손승일 2016.07.01 11975
6 튜닝 다중컬럼 조건에 대한 인라인뷰 처리방안 2 박동윤 2016.12.27 3998
5 Java JDBC를 사용한 다중화 구성 SELECT Query 부하 분산 가이드 file 윤준수 2017.03.30 2646
4 Linux 리눅스에서 top 명령어를 통한 CPU 점유율 확인 및 측정하기 file 정훈 2017.06.02 29058
3 기타 따라하면 쉬운 compactdb 사용법 file 허서진 2017.07.01 1478
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

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