스프링 트랜잭션 소개
스프링 트랜잭션 추상화
- JDBC와 JPA는 트랜잭션을 사용하는 코드 자체가 다르다
- 그래서 JDBC 기술을 사용하다가 JPA로 변경하게 되면 트랜잭션을 사용하는 코드도 모두 함께 변경해야 한다
- 스프링은 이런 문제를 해결하기 위해 트랜잭션 추상화를 제공한다
PlatformTransactionManager 인터페이스
package org.springframework.transaction;
public interface PlatformTransactionManager extends TransactionManager {
TransactionStatus getTransaction(@Nullable TransactionDefinition definition)
throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
- 트랜잭션은 시작, 커밋, 롤백으로 단순하게 추상화 할 수 있다

- 스프링은 실무에서 주로 사용하는 데이터 접근 기술에 대한 트랜잭션 매니저의 구현체도 제공해서 스프링 빈으로 등록하고 주입 받아서 사용하기만 하면 된다
- 여기에 추가로 스프링 부트는 어떤 데이터 접근 기술을 사용하는지 자동으로 인식해서 그에 맞는 트랜잭션 매니저를 스프링 빈으로 등록해준다
스프링 트랜잭션 사용 방식
1.프로그래밍 방식 트랜잭션 관리
- 트랜잭션 매니저 또는 트랜잭션 템플릿 등을 사용해서 트랜잭션 관련 코드를 직접 작성하는 것
- 애플리케이션 코드가 트랜잭션이라는 기술 코드와 강하게 결합된다