1. Repository Layer

JPA나 QueryDsl로 쌩 DB 로직만 작성하는 곳

피라미터, 리턴 전부 DAO


2. CrudService Layer(가칭)

주로 DTO를 피라미터로 받아서 Mapper로 DAO로 변환 후, repository와 상호작용 하는 계층

주로 여러 Application에서 재사용을 가정한 DB와 관련된 로직을 작성하는 곳

가독성을 위해 좀 커진다 싶으면 CQS 패턴을 사용함

여기까지가 공통 모듈


3. Service Layer

각 Application에서 순수 비지니스 로직을 작성하는 곳

DB와 상호작용 할 땐 CrudService를 주입해서 DTO를 주고 DTO를 리턴 받음



한 Application에서만 사용되고 재사용 여지가 없는 DB 로직은 해당 모듈 안에서 따로 repository를 작성하기도 함




이렇게 하니까 확실히 프로젝트가 커질수록 각 계층의 책임은 명확해지는데 의존성 관계는 점점 뚠뚠해지고 복잡해짐

다른 대안이 있을까요