Spring 에서 Mybatis 사용하기 :: 웹서버를 구축하기 위한 모든것이 담겨 있습니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

웹서버를 구축하기 위한 모든것이 담겨 있습니다.
[1]
등록일:2015-05-21 13:36:54 (0%)
작성자:
제목:Spring 에서 Mybatis 사용하기

Spring 3.2.x framework 내에는 Mybatis 연동 라이브러리가 포함 되어 있지 않다. (ibatis에 대한 연동 라이브러리는 포함 되어 있다.) 따라서 Spring 3.2.x 에서 Mybatis 를 사용 하려면 Github 에 있는 별도 라이브러리를 포함해야 한다. (http://mybatis.github.io/spring/)

 

Maven 을 사용하는 경우에는 기본적으로 다음 Dependency 를 넣으면 Spring-Mybatis 연동 기능을 사용 가능하다.

  1 <dependency>
  2     <groupId>org.mybatis</groupId>
  3     <artifactId>mybatis-spring</artifactId>
  4     <version>1.2.2</version>
  5 </dependency>
  6 <dependency>
  7     <groupId>org.mybatis</groupId>
  8     <artifactId>mybatis</artifactId>
  9     <version>3.2.5</version>
 10 </dependency>

 

위의 1~5 라인은 spring - mybatis 연동 모듈이고, 6~10 라인은 mybatis 그 자체이다.

물론 JDBC Driver 도 별도로 추가해야 한다.

만일 Maven을 사용하지 않는 경우에는 mybatis-x.x.x.jar 와 mybatis-spring-x.x.x.jar 를 Classpath에 추가해 주면 된다.

 

일반적으로 Mybatis 를 사용하는 순서는 다음과 같다.

1) mybatis configuration 생성 (일반적으로 configuration.xml) - mybatis context 정보 (ex. DB 접속 정보)

2) mapper xml 생성 (일반적으로 mapper.xml) - 실행할 SQL 정보

3) mapper interface 생성 (mapper xml 과 1:1 연동을 하는 Java Inteface)

4) mapper interface 를 호출하는 Java Application (주로 DAO 역할 수행)

 

Spring 에서 Mybatis를 사용할 때에는 약간 순서가 바뀐다.

1) mybatis configuration 생성 (Mybatis 독립적으로 사용할 때 보다는 내용이 간소함. 나머지는 Spring context에서 관리)

2) mapper xml 생성 (위와 동일)

3) mapper interface 생성 (위와 동일)

4) Spring context 에 SqlSessionFactory 등록

5) Spring context 에 MapperFactoryBean 등록

6) mapper interface 를 사용하는 Spring Bean 에 앞의 5에서 생성한 Mapper bean 을 종속성 주입 (Dependency Injection) 

 

이 순서에 따른 예제는 다음과 같다.

1) mybatis configuration (configuration.xml)

  1 <?xml version="1.0" encoding="UTF-8" ?> 
  2 <!DOCTYPE configuration 
  3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
  4     "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5 <configuration> 
  6   <settings>  
  7       <setting name="defaultExecutorType" value="REUSE"/>
  8       <setting name="cacheEnabled" value="false"/>
  9       <setting name="logImpl" value="LOG4J"/>
 10   </settings>     
 11   <mappers> 
 12     <mapper resource="mybatis/mapper.xml"/>  
 13   </mappers> 
 14 </configuration>

* 위의 12라인에 사용하는 mapper.xml 에 대한 정보를 입력한다.

* 위의 예제에서는 DB 접속 정보가 없다. 이것은 Spring context에 등록된 Datasource 를 사용하기 위함이다. 아래의 3)에서 DB 접속 정보를 설정한다.

 

2) mapper.xml

  1 <?xml version="1.0" encoding="UTF-8" ?>  
  2 <!DOCTYPE mapper 
  3     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
  4     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5 <mapper namespace="tkstone.test.mapping.Mapper1">
  6   <insert id="insertA1" 
  7         parameterType="tkstone.test.param.A1"
  8            flushCache="true" statementType="PREPARED"   
  9         >
 10     insert into a1(col1, col2)
 11     values(#{col1}, #{col2})
 12   </insert>
 13 </mapper>     

* Mybatis 만 사용할 때와 차이가 없음

 

3) mapper interface

  1 package tkstone.test.mapping;
  2 
  3 import tkstone.test.param.A1;
  4 
  5 public interface Mapper1 {
  6     public int insertA1(A1 param);
  7 }
  8 

* Mybatis 만 사용할 때와 차이가 없음

 

4) Spring context에 SqlSessionFactory 등록

  1 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  2     <property name="dataSource" ref="testDataSource" />
  3     <property name="configLocation" value="classpath:mybatis/configuration.xml"/>
  4 </bean>

* SqlSessionFactoryBean 등록 시 DB 접속 정보 (Datasource) 및 Mybatis main config 정보를 등록함

* configLocation 에는  1)에서 생성한 Mybatis configuration 파일 경로를 설정

 

5) Spring context에 MapperFactoryBean 등록 (앞의 3)에서 생성한 Mapper1 interface에 대한 Factory)

  1 <bean id="mapper1" class="org.mybatis.spring.mapper.MapperFactoryBean">
  2     <property name="mapperInterface" value="tkstone.test.mapping.Mapper1" />
  3     <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  4 </bean>

* mapperInterface 에는 3)에서 생성한 Mapper interface 를 설정

* sqlSessionFactory 에는 4)에서 등록한 sqlSessionFactory를 설정. 이 값을 설정하지 않으면 "sqlSessionFactory" ID 값을 가진 Bean을 자동으로 설정

 

6) Spring Bean 에 mapper interface 주입

  1 <bean id="myBean" class="tkstone.test.transaction.MyBean">
  2     <property name="mapper1" ref="mapper1"/>
  3 </bean>

 

이렇게 하면 기본적으로 Spring 에서 Mybatis 를 이용하여 SQL을 실행할 수 있다.

[본문링크] Spring 에서 Mybatis 사용하기
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34414
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.