mybatis 트랜잭션 예제

기본적으로 MyBatis는 데이터베이스가 삽입, 업데이트 또는 삭제 호출에 의해 변경되었음을 감지하지 않는 한 실제로 커밋되지 않습니다. 이러한 메서드를 호출하지 않고 어떻게 든 변경한 경우 커밋 및 롤백 메서드에 true를 전달하여 커밋되도록 할 수 있습니다(참고, 자동 커밋 모드에서 세션을 강제로 적용하거나 외부 트랜잭션을 사용하는 메서드 관리자)를 참조하십시오. MyBatis가 커밋을 호출하지 않으면 롤백()을 호출할 필요가 없습니다. 그러나 여러 커밋 및 롤백이 가능한 세션에 대해 보다 세밀한 제어가 필요한 경우 이를 가능하게 하는 롤백 옵션이 있습니다. openSession() 메서드는 SqlSession을 만듭니다. SqlSession은 MyBatis로 작업하기 위한 기본 Java 인터페이스입니다. 이 인터페이스를 통해 우리는 명령을 실행 매퍼를 얻고 트랜잭션을 관리합니다. 이 예제에서는 @SelectKey 주석을 사용하여 삽입 하기 전에 시퀀스에서 값을 검색 합니다. 에서는 스프링 트랜잭션 관리자를 구성하지 않아야 하며 기본 MyBatis ManagedTransactionFactory를 사용하도록 SqlSessionFactoryBean도 구성해야 합니다. 해당 환경에 대한 구성을 설정합니다. 물론 잘못된 환경을 지정하면 오류가 발생합니다.

환경 매개 변수를 사용하지 않는 빌드 메서드 중 하나를 호출하면 기본 환경이 사용됩니다(위의 예에서 기본=”개발”로 지정). 최종 빌드 메서드는 구성 인스턴스를 사용 합니다. 구성 클래스에는 SqlSessionFactory 인스턴스에 대해 알아야 할 모든 것이 포함되어 있습니다. Configuration 클래스는 SQL 맵을 찾고 조작하는 등 구성을 면관하는 데 유용합니다(응용 프로그램이 요청을 수락한 후에는 권장되지 않음). 구성 클래스에는 Java API로만 노출된 모든 구성 스위치가 있습니다. 다음은 구성 인스턴스를 수동으로 빌드() 메서드에 전달하여 SqlSessionFactory를 만드는 방법에 대한 간단한 예제입니다. 다음 예제에서는 데이터베이스 테이블에서 책을 삽입하고 읽습니다. 이 구성에서 MyBatis는 CMT로 구성된 다른 Spring 트랜잭션 리소스처럼 실행됩니다. Spring은 기존 컨테이너 트랜잭션을 자동으로 사용하고 SqlSession을 연결합니다.

트랜잭션이 시작되지 않고 트랜잭션 구성에 따라 트랜잭션이 필요한 경우 Spring은 새 컨테이너 관리 트랜잭션을 시작합니다. 처음 네 가지 방법은 XML 문서를 참조하는 InputStream 인스턴스를 사용하거나 더 구체적으로 위에서 설명한 mybatis-config.xml 파일을 사용하므로 가장 일반적입니다.

Bookmark the permalink.

Comments are closed.