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