트랜잭션 - 추상화

현시기얌·2022년 6월 13일
0

데이터베이스

목록 보기
13/16
post-custom-banner

트랜잭션 추상화 인터페이스

public interface TxManager {
    begin();
    commit();
    rollback();
}
  • 트랜잭션은 사실 단순하다.
    트랜잭션을 시작하고 비즈니스 로직의 수행이 끝나면 커밋하거나 롤백하면 된다.
  • 그리고 TxManager 인터페이스를 기반으로 각각의 기술에 맞는 구현체를 만들면 된다.
    • JdbcTxManager : JDBC 트랜잭션 기능을 제공하는 구현체
    • JpaTxManager : JPA 트랜잭션 기능을 제공하는 구현체

트랜잭션 추상화와 의존관계

  • 서비스는 특정 트랜잭션 기술에 직접 의존하는 것이 아니라, TxManager라는 추상화된 인터페이스에 의존한다.
    이제 원하는 구현체를 DI를 통해서 주입하면 된다.
  • 클라이언트인 서비스는 인터페이스에 의존하고 DI를 사용한 덕분에 OCP 원칙을 지키게 되었다.
    이제 트랜잭션을 사용하는 서비스 코드를 전혀 변경하지 않고 트랜잭션 기술을 마음껏 변경할 수 있다.

스프링의 트랜잭션 추상화

  • 스프링은 트랜잭션 추상화 기술을 제공해준다.
  • 심지어 데이터 접근 기술에 따른 트랜잭션 구현체도 대부분 만들어두어서 가져다 사용하기만 하면 된다.

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;
}
  • getTranscation() : 트랜잭션을 시작한다.
  • commit() : 트랜잭션을 커밋한다.
  • rollback() : 트랜잭션을 롤백한다.
profile
현시깁니다
post-custom-banner

0개의 댓글