MyBatis 집합 Spring (2) 의 SqlSession

SqlSession Factory 의 bean 을 설정 하면 SqlSession Template 의 bean 을 설정 해 야 합 니 다. Spring 의 Bean 에서 스 레 드 가 안전 한 대상 이 고 스 레 드 가 안전 한 SqlSession 대상 을 포함 합 니 다.SqlSessionTemplate 는 안전 한 SqlSession 대상 을 제공 하기 때문에 Spring Bean 에서 같은 SqlSessionTemplate 를 공유 할 수 있 습 니 다. 개념 적 으로 SqlSessionTemplate 는 Spring DAO 모듈 과 비슷 합 니 다.
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

이제 우 리 는 SqlSessionBean 을 Spring 의 임의의 Bean 에 주입 하고 SqlSession 대상 을 활용 하여 SQL 맵 의 성명 을 실행 할 수 있 습 니 다.
public class StudentDaoImpl implements StudentDao
{
private SqlSession sqlSession;
public void setSqlSession(SqlSession session)
{
this.sqlSession = session;
}
public void createStudent(Student student)
{
StudentMapper mapper =
this.sqlSession.getMapper(StudentMapper.class);
mapper.insertStudent(student);
}
}

만약 XML 을 기반 으로 Spring 의 Bean 을 설정 하고 있다 면, SqlSession 의 Bean 을 Student Daoimpl 에 주입 할 수 있 습 니 다.
<bean id="studentDao" class="com.owen.mybatis.dao.StudentDaoImpl">
<property name="sqlSession" ref="sqlSession" />
</bean>

주 해 를 기반 으로 설정 했다 면 아래 방법 을 사용 할 수 있 습 니 다.
@Repository
public class StudentDaoImpl implements StudentDao
{
private SqlSession sqlSession;
@Autowired
public void setSqlSession(SqlSession session)
{
this.sqlSession = session;
}
public void createStudent(Student student)
{
StudentMapper mapper =
this.sqlSession.getMapper(StudentMapper.class);
mapper.insertStudent(student);
}
}

SqlSession 의 대상 을 주입 하 는 다른 방법 도 있 습 니 다. SqlSession Dao Support 를 계승 할 수 있 습 니 다.이 방법 은 실 행 된 매 핑 문 구 를 제외 하고 신체 의 모든 사용자 정의 논 리 를 수행 할 수 있다.
public class StudentMapperImpl extends SqlSessionDaoSupport implements
StudentMapper
{
public void createStudent(Student student)
{
StudentMapper mapper =
getSqlSession().getMapper(StudentMapper.class);
mapper.insertAddress(student.getAddress());
//Custom logic
mapper.insertStudent(student);
}
}
<bean id="studentMapper" class="com.owen.mybatis.dao.StudentMapperImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

이 방법 에서 우 리 는 Sqlssion 대상 을 주입 하여 Mapper 의 인 스 턴 스 를 얻 고 맵 을 실행 하 는 문 구 를 얻 었 습 니 다.여기 서 Spring 은 스 레 드 에 설 치 된 SqlSession 대상 을 호출 하고 실행 이 끝 난 후에 끄 는 방법 입 니 다.다음 장 에서 우 리 는 MyBatis - Spring 이 더 좋 은 방법 을 제공 하여 처리 할 것 이 라 고 설명 할 것 이다.

좋은 웹페이지 즐겨찾기