인프런 커뮤니티 질문&답변

lwisekiml님의 프로필 이미지

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

30강. 책 생성 API 개발하기

BookRepository 위치

해결된 질문

23.04.28 23:04 작성

·

355

4

혹시 BookRepository를 domain/book 아래에 만드신 이유가 있으신가요??

 

BookRepository이니까 repository/book 아래 만드는게 나중에 찾을 때도 편할거 같고 좀더 직관적인 거같아서 질문드립니다.

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

2023. 04. 29. 11:30

안녕하세요, Iwisekiml님! 좋은 질문 감사드립니다! 😊

말씀해주신 것처럼 BookRepository 를 repository 패키지에 넣는 방법도 있습니다!

 

다만, 저는 매우 개인적으로 JpaRepository 와 같이 스프링이 제공하는 기본 Repository는 해당 도메인과 함께 놓는 것을 선호하는 편입니다. 그 이유는 다음과 같습니다!!

  1. 프로젝트가 커지게 되면 패키지를 타고 들어가 클래스를 찾는 경우보다, command + shift + O (Ctrl + Shift + N) 와 같은 단축키를 사용해 특정 클래스를 찾는 경우가 많아집니다! 즉, BookRepository를 찾고 싶을 경우 위의 단축키 -> BookRepo 입력 -> 화살표 아래로 선택 -> 엔터와 같은 순서로 찾게 되는거죠!

  2. 프로젝트 초반에 도메인 별로 repository/domain 패키지를 만드는 것이 번거롭게 느껴질 때가 있습니다.

  3. 스프링이 제공하는 기본 Repository는 DB에 접근할 수 있는 객체이기도 하지만, Entity (Domain 객체)를 저장하고 있는 저장소 라고 볼 수도 있습니다. 따라서 domain 패키지에 기본 Repository가 있다고 하더라도 domain 저장소 이기 때문에 어색하지 않을 수 있습니다!

    1. DAO와 Repository - https://www.inflearn.com/questions/111159/domain%EA%B3%BC-repository-%EC%A7%88%EB%AC%B8

 

다시 한 번 강조드리면, 제가 강의에서 보여드린 예시는 이번 프로젝트에 적합하다고 개인적으로 생각한 패키지 구성이라는 점입니다! 패키지를 구성하는 방법에는 정답이 없습니다! 이번 프로젝트 처럼 계층별 -> 도메인별로 패키지를 만들기도 하고, 어떤 분은 도메인별 -> 계층별 패키지 구성을 선호하시기도 합니다! 또 어떤 분은 계층형 아키텍처의 패키지 구조보다는 육각형 아키텍처의 패키지 구조를 사용하시기도 하죠!

 

https://www.inflearn.com/questions/16046/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8F%B4%EB%8D%94-%EA%B5%AC%EC%A1%B0%EC%99%80-%EA%B0%95%EC%9D%98-%EC%9D%BC%EC%A0%95%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8%EC%9D%B4-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 를 함께 보셔도 좋을 것 같습니다!!

 

감사합니다!! 🙏