728x90
트랜잭션 추상화
현재 서비스 계층은 트랜잭션을 사용하기 위해서 JDBC 기술에 의존하고 있다. 향후 JDBC에서 JPA 같은 다른 데이터 접근 기술로 변경하면, 서비스 계층의 트랜잭션 관련 코드도 모두 함께 수정해야 한다.
트랜잭션을 사용하는 코드는 데이터 접근 기술마다 다르다
문제를 해결하려면 트랜잭션 기능을 추상화하면 된다
트랜잭션 추상화로 JDBC 구현 기술이 서비스 계층에 누수되는 문제가 해결된다
서비스는 특정 트랜잭션 기술에 직접 의존하는 것이 아니라, TxManager 라는 추상화된 인터페이스에 의존 한다. 이제 원하는 구현체를 DI를 통해서 주입하면 된다. 예를 들어서 JDBC 트랜잭션 기능이 필요하면 JdbcTxManager 를 서비스에 주입하고, JPA 트랜잭션 기능으로 변경해야 하면 JpaTxManager 를 주입하면 된다.
스프링이 제공하는 트랜잭션 추상화 기술을 사용하면 된다
→ 스프링 트랜잭션 추상화의 핵심은 PlatformTransactionManager 인터페이스이다.
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;
}
getTransaction()
- 트랜잭션을 시작한다.
commit()
- 트랜잭션을 커밋한다.
rollback()
- 트랜잭션을 롤백한다.
728x90
'Spring > Spring DB' 카테고리의 다른 글
스프링 부트의 자동 리소스 등록 (0) | 2023.10.03 |
---|---|
트랜잭션 템플릿 (0) | 2023.10.03 |
트랜잭션 동기화 (0) | 2023.10.03 |
JDBC에 의존하는 트랜잭션을 적용하면서 나타나는 문제점 (0) | 2023.10.03 |
트랜잭션 (1) | 2023.10.02 |