티스토리 뷰

우선 내가 사용하는 DB는 MySQL, MsSQL 2가지인데 우선 MySQL로 연결하는 것을 해보겠다. DB가 달라지더라도 바뀌는 것은 JDBC 파일과 커넥션 정보 뿐이니 MyBatis 의 본질만 잘알고 있다면 어느 DB라도 연결하는 것은 어렵지 않다.

 

저번시간에 알아봤던 MyBatis 예제 프로젝트 만들기 포스팅(http://emflant.tistory.com/29)에서 추가했던 2개의 dependency 말고도 하나 더 추가를 해야한다. 실제 DB와 연결을 해야하니 MySQL에서 제공하는 Connector를 받아야 하기 때문이다. 사이트 가지 않고 이거 역시 Maven 에서 간단히 받자. 

 

 

 

OK하고 잘 연결됬는지 확인만하면 이로써 MyBatis 를 사용할 기본적인 셋팅은 끝난다.

 

MyBatis가 어떤 원리로 굴러가는 건지 대충만 알아보자.

MyBatis는 SqlSessionFactory 객체로 부터 모든 게 시작된다. 이 SqlSessionFactory 객체는 SqlSessionFactoryBuilder로 부터 생성이 되는데 하나의 XML 설정파일 정보를 이용해 만들어진다. (XML 설정파일을 선언안하고 할 수 있으나 그 방법은 여기서 굳이 안다루며, MyBatis pdf 문서 보시면 알 수 있다.) 그 XML 설정파일은 MyBatis 시스템의 아주 핵심적인 정보들이 담겨져 있으며 모든 설정값들을 알지는 못하더라도 아래의 심플한 예제들에 대해서는 대충 아는 것이 좋다.

 

우선 예제 프로젝트에서 xml 설정파일을 추가해야 한다. 어디다 넣어야 할까. 맨 밖에 ..? 어디구석에..? 음.. 난 우선 orm 관련 문서는 한 패키지에 몰아 넣겠다. 프로젝트 안에 있는 src/main/java 를 우클릭해서 [New] - [Package] 를 클릭하자.

 

 

 

package 추가하는 창이 뜨면 Name에 com.mybatis.sample.sql 을 기입후 Finish 하자.

 

그리고 똑같이 창을 또 열어서 com.mybatis.sample.app 도 추가하자. 각 패키지는 다음과 같은 역할을 지닌다.

 

com.mybatis.sample.sql : config xml 파일과 mapper xml 파일들을 넣을 것이다.

com.mybatis.sample.app : 여기에는 쿼리 실행에 필요한 파라메터 셋팅이나 결과 보여주는 기본적인 로직을 넣을 것이다.

 

 아래와 같이 나오면 잘된거다.

 

 

이제 정말로.. XML 설정파일을 만들어보자. com.mybatis.sample.sql 을 우클릭해서 [New] - [File] 을 눌러서 New File 창을 띄운다음에 mybatis-config.xml 라고 기입하고 Finish 하면 파일이 하나 생성이 되고 그 파일에 아래 내용을 붙여 넣자.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="UNPOOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mybatis/sample/sql/SampleMapper.xml"/>
    </mappers>
</configuration>

여기 나와 있는 설정들만 알아서는 안되겠지만 우선 간단히 어떤 설정이 있는지만 위에 것만으로 알아보자.

 

TransactionManager

transactionManager 의 type 속성에서 선택할 수 있는 값은 JDBC와 MANAGED 두개다. JDBC 는 말그대로 JDBC가 commit 과 rollback 의 기능을 직접 사용 가능하게 하는 옵션이다. MANAGED 는 트랜젝션에 대해 어떠한 직접적인 영향도 행사하지 않는 것을 의미한다. MyBatis 를 어우르고 있는 더 큰 개념의 컨테이너(예를 들어 JEE Application Server) 혹은 개발프레임워크(예를 들어 Spring)는 자체적으로 트랜젝션 관리를 하고 있으므로.. 굳이 MyBatis 에서 설정하지 않아도 되는 경우에 MANAGED 옵션을 쓴다. 알고보면 중요한 옵션이다.

 

DataSource

dataSource의 타입에는 UNPOOLED, POOLED, JNDI 3개의 값을 지정할 수 있다. UNPOOLED는 DB관련 요청이 올때마다 실시간으로 커넥션 객체를 open 하고 close 한다. 이건 미리 커넥션 객체를 미리 만들어 놓는 POOL 방식이 아니므로 조금 느릴 수 있으나, 데이터 조회/등록/수정/삭제를 요청했을 때 좀 딜레이가 생겨서 결과를 가져와도 상관없는 간단한 어플리케이션에 알맞다.(그런 프로젝트가 있을까..했지만 우린 아주아주 간단한 로직이므로 이것으로 셋팅한다.) 두번째로 POOL 속성은 너무나도 유명하고 인기있는 Web Application 의 방법으로, 커넥션 객체들을 미리 만들어 놓고 관리하기 때문에 객체를 만드는 시간을 줄이는데 목적이 있다. 마지막으로 JNDI 속성은 EJB 혹은 Application server 같은 컨테이너가 따로 데이터소스를 관리하는 경우에 MyBatis가 직접 데이터소스를 관리하지 않고 JNDI 방식으로 연결만 해줄때 사용한다.

driver, url, user, password 의 속성들은 직접적으로 커넥션 정보를 설정하는 곳인데 JNDI 방식이면 설정할 필요 없다. 어쨋든 우린 JNDI 방식으로 할 생각이 없으니 기입한다. 기입하는데.. xml 에 아이피, 아이디랑 비번을 직접적으로 셋팅하지 않고 ${ } 로 변수처럼 정의한다. 그러면 실질적인 값은 다른 properties 파일이나 소스상에 구현 할 수 있으니 그게 더 유연한 셋팅을 가능케 한다.






반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함