TransactionManager
TransactionManager는 Spring에서 트랜잭션을 제어하기 위해 트랜잭션 기능을 추상화 한 것이다.
Spring에서 TransactionManager를 상속 받은 PlatformTransactionManager가 트랜잭션 매니저의 핵심 인터페이스다.
PlatformTransactionManager의 구현체들은 getTransaction(), commit(), rollback()을 각자의 방법으로 구현하여 여러 작업을 논리적으로 하나의 작업으로 묶어 처리하도록 한다.
- DataSourceTransactionManager
- 가장 일반적으로 사용되는 TransactionManager로 JDBC기반의 작업을 관리한다. Mybatis를 사용한다면 이 트랜잭션 매니져를 사용해야한다.
- HibernateTransactionManager
- Hibernate ORM 프레임워크 사용시 필요하며 Hibernate 세션을 사용하여 트랜잭션을 관리한다.
- JpaTransactionManager
- JPA 사용시 필요하며 JPA EntityManager를 사용하여 트랜잭션을 관리.
- JmsTransactionManager
- 자바 메시징 시스템을 사용할 때 필요하며 메시지 큐에서 트랜잭션을 관리.
- JtaTransactionManager
- 하나 이상의 DB나 글로벌 트랜잭션을 적용할 때 필요.
- 여러 개의 트랜잭션 리소스에 대한 작업을 하나의 트랜잭션으로 묶을 수 있음.
(예 DB + JMS를 하나의 작업으로 묶을 때)
- 여러 서버에 분산처리 하는 작업을 트랜잭션으로 묶어주기도 함.
한 줄평 : 트랜잭션 매니저를 직접 선택해본 적이 없어 이렇게 많은 줄 몰랐다.