토비의 스프링 정리

토비의 스프링 - 5.5 5장 정리

ksb-dev 2022. 10. 5. 21:30

5.5.1 정리

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