5.5.1 정리
- 비즈니스 로직과 데이터 액세스 로직은 분리되어야 함. 또한, 비즈니스 로직 내부에서도 책임과 역할에 따라 메소드로 분리되야 함
- 인터페이스와 DI를 이용하여 결합도를 낮춰야 함
- DAO를 사용하는 비즈니스 로직에는 트랜잭션이 필요함
- 트랜잭션의 시작과 종료를 지정하는 일을 트랜잭션 경계설정이라 함. 주로 경계설정은 비즈니스 로직에서 많이 발생됨
- 트랜잭션 정보를 담은 DAO에 전달하는 방법은 매우 비효율적이기 때문에, 스프링이 제공하는 트랜잭션 동기화 방법을 사용하는 것이 편리함
- 자바에서 사용되는 트랜잭션 API의 종류와 방법은 많음. 트랜잭션 방법이 변경되면 경계설정 코드도 변경돼야 함
- 트랜잭션 경계설정 코드가 비즈니스 로직 코드에 영향을 주지 않기 위해 스프링이 제공하는 트랜잭션 서비스 추상화를 이용함
- 서비스 추상화는 로우레벨의 트랜잭션과 API의 변화에 상관없이 일관된 API를 가진 추상화 계층을 도입함
- 서비스 추상화는 JavaMail과 같이 테스트하기 어려운 기술에도 적용할 수 있음. 테스트를 편리하게 도와주는 것 만으로도 서비스 추상화는 가치있음
- 테스트 대역은 테스트 대상이 사용하는 의존 오브젝트를 대체하는 것임
- 테스트 대역은 테스트 대상 오브젝트가 원활하게 동작할 수 있도록 도우면서 테스트를 위해 간접정 정보를 제공해주기도 함
- 테스트 대역 중에서 테스트 대상으로부터 전달받은 정보를 검증할 수 있도록 설계된 것을 목 오브젝트라 함
'토비의 스프링 정리' 카테고리의 다른 글
토비의 스프링 - 6.2 고립된 단위 테스트 (0) | 2022.10.06 |
---|---|
토비의 스프링 - 6.1 트랜젝션 코드의 분리 (0) | 2022.10.06 |
토비의 스프링 - 5.4 메일 서비스 추상화 (0) | 2022.10.05 |
토비의 스프링 - 5.3 서비스 추상화와 단일 책임 원칙 (0) | 2022.10.04 |
토비의 스프링 - 5.2 트랜잭션 서비스 추상화 (0) | 2022.10.04 |