1. 문제상황 Repository단에서 Command와 Query를 분리하여 책임을 분리함으로써 코드 응집도와 유지보수성을 높이고자 하였다. 이에 처음 시도했던 방법은 아래와 같다. Create, Update, Delete를 담당할 CommandableRepo Interface와 Read를 담당할 QueryableRepo Interface로 나누었다. 구현체는 CommandRepo, QueryRepo로 구현한다. 하지만, 문제가 생겼다. 어떠한 엔티티를 save해야 하는 상황을 가정할 때, 중복조회나 다른 조회 메서드를 이용해야 하는 상황이 주로 발생했다. 이럴때, Repository를 사용해야 하는 Service 계층에서 의존성이 너무나 많아지는 문제가 발생했다. 2. 문제해결 과정 1 - interf..