- JPA의 특성상 다른 Service 이용 시에 Domain 객체를 반환 받아 사용해야 함.
- 기존 설계의 경우 Controller → Service → Repository 의 의존 관계에서 Service layer는 필요에 따라 다른 Service Layer를 참조 해야 함. 이로 인해 도메인 객체 자체를 반환 타입으로 사용해야 하는 상황이 발생하여 컨트롤러에서도 도메인 객체를 다룰 수 있게 됨. 이는 트랜잭션 제어 밖으로 도메인 객체를 노출시켜 Lazy Initialization 예외를 발생할 가능성이 생김.
- 이를 해결하기 위해서 Controller → Service → Repository 레이어간 참조 방향을 엄격하게 지키고, 기존의
Service : Repository = 1 : 1
이 아닌1: N
으로 변경하고 Service간의 참조를 하지 않도록 변경하였음.