Spring - Mybatis 에서 Mapper interface 를 주입받는 방법과 SqlSession 을 주입받는 방법
Mybatis/노하우정보 2016. 4. 27. 18:26Spring - Mybatis 에서 SQL을 실행 하려면 크게 다음 2가지 방법을 사용 가능하다.
1) Mapper interface 를 주입받는 방법
2) SqlSession 을 주입받는 방법
1) Mapper interface 를 주입 받는 방법은 앞에서 설명 했듯이 MapperFactoryBean을 이용하는 것이다.
MapperFactoryBean 을 이용해서 Mapper interface bean 을 선언하는 방법은 다음과 같다.
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> |
SQL을 실행 하려는 Bean 에서는 "mapper1" 을 주입 (Dependency injection) 받아서 실행하면 된다.
2) SqlSession 을 주입 받는 방법은 SqlSessionTemplate 을 이용하는 것이다.
다음은 SqlSession 을 Bean 으로 선언하는 부분이다.
1 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 2 <constructor-arg index="0" ref="sqlSessionFactory" /> 3 </bean> |
이렇게 선언된 SqlSession 을 사용하는 Bean (주로 DAO 클래스) 에서는 다음과 같이 구현한다.
1 import org.apache.ibatis.session.SqlSession; 2 3 public class MyDao { 4 private SqlSession sqlSession; 5 6 @Resource(name="sqlSession") 7 public void setSqlSession(SqlSession sqlSession){ 8 this.sqlSession = sqlSession; 9 } 10 11 public void insertA1() throws Exception{ 12 sqlSession.insert("tkstone.test.mapping.Mapper1.insertA1", SomeParam); 13 } 14 } |
위의 예제의 11라인에서는 Mybatis SqlSession.insert() 메소드를 바로 호출하고 있다.
결과적으로 실행되는 SQL은 동일하다. 개인적으로 생각하는 장단점은 다음과 같다.
|
Mapper interface bean 선언 |
SqlSession bean 선언 |
장점 |
|
|
단점 |
|
|
'Mybatis > 노하우정보' 카테고리의 다른 글
MyBatis 내장 cache 에 대해서 (0) | 2016.04.27 |
---|---|
Spring Transaction propagation mode에 따른 내부 동작 메커니즘 (0) | 2016.04.27 |
Spring Transaction 내부 동작 메커니즘 (0) | 2016.04.27 |
TransactionTemplate 을 이용한 Spring Transaction 사용 (0) | 2016.04.27 |
Spring Transaction 사용법 (0) | 2016.04.27 |
Spring 에서 Mybatis 사용하기 (0) | 2016.04.27 |
Spring에서 mybatis 연동시 sqlSession 주입 시기 (0) | 2016.04.27 |
MyBatis에서의 Transaction 관리 (0) | 2016.04.27 |