์์ ๊ตฌ์กฐ์์ 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๊ฐ์ง ์ค ์ด๋ค๊ฑธ ์ ํํ๋๊ฒ ๊ฐ์ฅ ์ ์ ํ์ง ๊ถ๊ธํฉ๋๋ค....