SqlSession
sql명령어를 실행시키기 위해 필요한 모든 메서드를 갖고 있다. sql문을 직접 실행할 수 있게 하는 역할이다.

SqlSessionTemplate

SqlSessionFactory
Mybatis에서 SqlSession을 생성하기 위해 SqlSessionFactory를 사용한다. 세션을 한번 생성하면 매핑구문을 실행하거나 커밋 또는 롤백을 하기 위해 세션을 사용할수 있다. 마지막으로 더 이상 필요하지 않은 상태가 되면 세션을 닫는다. 마이바티스 스프링 연동모듈을 사용하면 SqlSessionFactory를 직접 사용할 필요가 없다. 왜냐하면, 스프링 트랜잭션 설정에 따라 자동으로 커밋 혹은 롤백을 수행하고 닫혀지는, 쓰레드에 안전한 SqlSession 개체가 스프링 빈에 주입될 수 있기 때문이다.

mapperLocations 속성
마이바티스 xml파일과 클래스를 연결시키기 위해 사용한다. 섹션을 사용해서 클래스패스를 지정할 수도 있고, mapperLocations 를 사용하여 지정할 수도 있다.

root-context.xml에서 사용할 때

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- dataSource 설정, spring에서 jdbc를 통해 mysql에 접속할 수 있게 함 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/comp/env/jdbc/boardweb" />
</bean>

<!-- MyBatis -->
<bean id= "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mybatis-config.xml 파일이 스프링이 동작할 때 같이 동작하도록 설정 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- mapperLocations 속성 추가 -->
<property name="mapperLocations" value="classpath*:mappers/*.xml"></property>
</bean>

<!-- SqlSessionTemplate은 개발자들이 DAO와 DB를 직접 연결 맺고, 종료할 필요가 없게 해준다. -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" />
</bean>

<!-- Transaction 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

Dao에서 의존성 주입으로 사용할 때

1
2
@Resource(name="sqlSessionTemplate")
private SqlSession sql;