Java의 MyBatis+Spring 프레임워크에서 데이터 액세스 대상 DAO 모드를 사용하는 방법

2749 단어 MyBatisDAOJava
SqlSessionTemplate
SqlSessionTemplate는 MyBatis-Spring의 핵심입니다.이 클래스는 MyBatis의 SqlSession을 관리하고 MyBatis의 SQL 방법을 호출하여 이상을 번역합니다.SqlSessionTemplate는 여러 DAO가 공유하여 사용할 수 있는 안전한 라인입니다.
SQL 메서드를 호출할 때, 맵퍼 getMapper () 메서드에서 되돌아오는 메서드를 포함하고, SqlSessionTemplate는 현재 Spring의 업무와 관련된 SqlSession을 사용할 것을 보장합니다.또한 세션의 생명주기를 관리하고 필요한 닫기, 제출 또는 스크롤 작업을 포함합니다.
SqlSessionTemplate는 SqlSession을 실현했다. 이것은 바로 MyBatis의 SqlSession을 간단하게 교체해야 한다는 것이다.
Sql Session Template는 기본 MyBatis를 대체하는 데 사용되는 Default Sql Session입니다. 스프링에 참여할 수도 없고 주입될 수도 없습니다. 라인이 안전하지 않기 때문입니다.같은 응용 프로그램에서 두 종류 간의 전환은 데이터의 일치성에 문제를 일으킬 수 있다.
SqlSessionTemplate 대상은 SqlSessionFactory를 구조 방법의 매개 변수로 사용할 수 있습니다.

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
  <constructor-arg index="0" ref="sqlSessionFactory"/> 
</bean> 
이 bean은 지금 DAO bean에 직접 주입할 수 있습니다.다음 코드와 같이 bean에 SqlSession 속성을 추가해야 합니다.

public class UserDaoImpl implements UserDao{ 
  private SqlSession sqlSession; 
  public void setSqlSession(SqlSession sqlSession){ 
    this.sqlSession = sqlSession; 
  } 
  public User getuser(String userId){ 
    return (User)sqlSession.selectOne 
    ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 
다음과 같이 SqlSessionTemplate를 주입합니다.

<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl"> 
  <property name="sqlSession" ref="sqlSession"/> 
</bean> 

SqlSessionDaoSupport
SqlSessionDaoSupport는 추상적인 지원 클래스로 SqlSession을 제공합니다.getSqlSession () 메서드를 호출하면 SqlSessionTemplate를 얻을 수 있습니다. 그러면 다음과 같이 SQL 메서드를 실행할 수 있습니다.

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ 
  public User getUser(String userId){ 
    return (User)getSqlSession().selectOne 
      ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 
보통 Mapper Factory Bean은 별도의 코드가 필요하지 않기 때문에 이런 종류의 첫 번째 선택이다.하지만 DAO에서 다른 비MyBatis의 일을 하거나 구체적인 클래스를 필요로 한다면 이 클래스는 매우 유용하다.SqlSessionDaoSupport는 sqlSessionFactory 또는 sqlSessionTemplate 속성을 설정해야 합니다.이것들은 명확하게 설정되거나 스프링에 의해 자동으로 어셈블됩니다.만약 둘 다 설정된다면, sqlSessionFactory는 무시됩니다.
클래스 UserMapperImpl이 SqlSessionDaoSupport의 하위 클래스라고 가정하면 Spring에서 다음과 같이 구성할 수 있습니다.

<bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl"> 
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
</bean> 

좋은 웹페이지 즐겨찾기