본문 바로가기

카테고리 없음

스프링 트랜잭션 추상화

반응형

1. 트랜잭션 추상화

기존의 문제점과 추상화를 통한 해결법

  • 트랜잭션은 원자적 단위의 비즈니스 로직을 처리하기 위해 사용한다. 그런데 구현 기술마다 트랜잭션을 사용하는 방법이 다르다.
  • 서비스 계층은 트랜잭션을 사용하기 위해서 JDBC 기술에 의존하고 있다고 가정하자
  • 향후 JDBC에서 JPA 같은 다른 데이터 접근 기술로 변경하면, 서비스 계층의 트랜잭션 관련 코드도 모두 함께 수정되어야 하는 문제점이 있다.
  • 이렇게 변경포인트가 하나일때 여러군데서 터지면..단일책임원칙에 맞지 않다.
  • 해결 방법은 트랜잭션 기능을 추상화 시켜라
  • 트랜잭션은 사실 단순하다. 트랜잭션을 시작하고, 비즈니스 로직의 수행이 끝나면 커밋하거나 롤백하면 된다.
  • 서비스는 특정 트랜잭션 기술에 직접 의존하는 것이 아니라, 추상화된 인터페이스(ex. TxManager)에 의존하게 하고 원하는 구현체를 만들어 DI를 통해서 주입하면 된다
  • 클라이언트인 서비스는 인터페이스에 의존하고 DI를 사용한 덕분에 OCP 원칙을 지키게 되었다
  • OCP : 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다

2. 스프링의 트랜잭션 추상화

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