상속 구조에서 querydsl 조회하기
답변 감사합니다. 위와 같이 상속을 사용해서 Entity 를 구성하는 경우 실무에서는 querydsl로 Item, Book, Ablum, Movie Entity의 비즈니스 로직을 작성할 때는 아래 와 같은 방법으로 repository와 service를 구현할 수 있다고 생각합니다. 실무에서는 어떤 방식을 주로 사용하는지 궁금합니다. 만약 3가지 모두 틀린 경우에는 어떤 방식이 가장 좋은 방식인지 궁금합니다. 경험 많으신 김영한 님께서 번호만 선택 해주신다면 많은 도움이 될거 같습니다 ㅜㅜ. 1. Item, Book, Ablum, Movie각각 repository를 따로 두고 service도 따로 둔다. public interface ItemRepository extends JpaRepository, ItemQuerydslRepository{ // .. } public interface MovieRepository extends JpaRepository, MovieQuerydslRepository { // .. } // ... public class ItemService { // .. } public class MovieService { // .. } //... 2. Item, Book, Ablum, Movie 를 모두 다른 repository로 두고 service에서 map/factory객체에 repository bean을 저장해서 사용한다. public interface Repository {} public interface ItemRepository extends JpaRepository, ItemQuerydslRepository, Repository { // .. } public interface MovieRepository extends JpaRepository, MovieQuerydslRepository, Repository { // .. } // ... @RequireArgumentrs public class ItemService { private final RepositoryFactory repositoryFactory; } @RequireArgumentrs public class RepositoryFactory { private final ItemRepository itemRepository; private final MovieRepository movieRepository ; // .... public Repository getObj(ItemType type) { if (type == MOVIE) return movieRepository ; // ,.,.. codes return itemRepository; } } 3. Item, Book, Ablum, Movie의 querydsl interface와 Impl class를 따로 두고 하나의 repository interface에 모두 상속하는 구조를 가진다. -> service도 1개만 사용 public interface ItemRepository extends JpaRepository, ItemQuerydslRepository, MovieQuerydslRepository{ // .. } @RequireArgumentrs public class ItemService { private final RepositoryFactory repositoryFactory; } 좋은 코드를 작성하기 위해서 위 3가지 중 어떤걸 선택하는게 가장 적절한지 궁금합니다....