Conversation
|
이 방식의 장점과 단점을 추가로 정리해봤어요. 장점application 패키지로 변경이 전파되지 않는다.이 PR의 변경사항에서 확인할 수 있는 것 처럼, 데이터베이스 접근 기술의 변경으로 인한 코드 변경이 domain 패키지에만 존재합니다. 레이어드 아키텍처를 잘 따랐고 그 장점을 누렸다고 봅니다. MissionRepositoryTest의 수정이 필요하지 않다.이 PR의 변경사항에서 확인할 수 있는 것 처럼, 테스트를 새로 작성하거나 테스트 위치를 변경할 필요가 없습니다. 원한다면 QueryDSL를 점진적으로 도입할 수 있다.이 PR에는 해당 사항이 없지만, 만약 어떤 쿼리가 QueryDSL로 작성하기 어려운 쿼리가 있었다면 이를 원한다면 application 레이어(Service)의 테스트에서 데이터베이스 종속을 제거할 수 있다.application 레이어의 테스트에서 영속성 컨텍스트 문제로 인해 물론, 어디까지나 불가능했던 선택지가 가능한 선택지로 바뀐거지, 꼭 선택해야 할 선택지가 된 건 아니에요! 참고로 Fake의 구현은 다른 데이터베이스 접근 기술을 추가 도입할 경우 점진적 도입이 가능하다.QueryDSL과 마찬가지로 다른 데이터베이스 접근 기술 도입 시에도 단점MissionRepository 클래스에도 메서드 추가 작업이 필요하다.확장성의 대가로 약간의 메서드 추가 작업이 필요해요. 추가되는 클래스 개수가 더 많다.
|
구현 요약
MissionRepository에 JPQL 사용하는 부분 QueryDSL로 대체
Member나 HashTag에는 QueryDSL 사용하는 부분이 없어서 변경 사항 없어요!
DB 접근 기술 변경이 Service 레이어의 변경이 필요한 건 어색하다고 생각해서 Repository에 추가 계층을 두었어요.
연관 이슈
참고
코드 리뷰에
RCA 룰을 적용할 시 참고해주세요.