5장에서는 지금까지 만든 DAO에 트랜잭션을 적용해보며 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 지원하는지를 살펴볼 것이다. -p.317
5.1 사용자 레벨 관리 기능 추가
를 읽고 인상 깊은 부분
- 비즈니스 로직의 위치는 어디가 가장 적합한가?
오브젝트에게 데이터를 요구하지 말고 작업을 요청하라
5.2 트랜잭션 서비스 추상화
를 읽고 인상 깊은 부분
- 트랜잭션 경계 설정의 책임을 비즈니스 서비스 계층에서 가져가면ㄴ
- Connection 파라미터의 노출이 필수적이다.
- 따라서 내부 구현 기술의 노출이 발생한다.
스프링의 트랜잭션 서비스 추상화
PlatformTransactionManager
& TransactionSynchronizationManager
package org.springframwork.transaction; public interface PlatformTransactionManager{ TransactionStatus getTransaction( @Nullable TransactionDefinition definition) throws TransactionException void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException; }
- 트랜잭션 매니저의 두가지 역할
- 트랜잭션 추상화
- 리소스 동기화
