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