Querydsl
์๋ฐ ์ฝ๋(์ํฐํฐ)๋ก๋ถํฐ DB์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ๋ ๋๊ตฌ
โข
Spring Data JPA ์ ์กฐํฉํ์ฌ ๋ณด๋ค ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ type-safe ํ๊ฒ ์์ฑ ๊ฐ๋ฅ
โข
Spring Data JPA Repository interface์ ๋งค๋๋ฝ๊ฒ ์ฐ๋
โข
Spring Data์์ ๋ค์ํ ์ํฌํธ ์ง์
โฆ
QuerydslRepositorySupport: EntityManager๋ฅผ ๋
ธ์ถํ์ง ์๊ณ , Querydsl ํ์ ๊ธฐ๋ฅ ์ง์ ์ง์
โฆ
QuerydslPredicateExecutor: Predicate์ ์ด์ฉํ dynamic select, Spring Data REST ์ง์
โฆ
QuerydslBinderCustomizer: ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ์ ์ธ๋ถ ๊ธฐ๋ฅ ์กฐ์ ์ ์ง์
Fetch
์ ํ๋ฆฌ์ผ์ด์
์ด DB๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ
DB์ ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์๋ ํฐ ๋น์ฉ์ด ์๋ชจ๋๊ธฐ ๋๋ฌธ์, ๋๋ํ๊ฒ ๊ฐ์ ธ์ค๋ ์ ๋ต์ด ํ์
โข
eager: ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ๊ฐ์ ธ์ค๊ธฐ
โข
lazy: ๊ฐ์ ธ์ค๋ ค๋ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ ๋ก ์ ๊ทผํ ๋ ๊ฐ์ ธ์ค๊ธฐ
โข
lazy ์ ๋ต์ ๊ธฐ๋ณธ์ ์ผ๋ก
โฆ
ORM์ ํน์ง์ด์ ๊ธฐ๋ฅ์ ์ฅ์
โฆ
๋ ๋น ๋ฅด๊ณ ๊ฒฝ์ ์ ์ธ ์ฟผ๋ฆฌ (์ ์ ํ๋ง ์ฌ์ฉํ๋ค๋ฉด)
โฆ
์๋ชป ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์ ๊ทผ ์๋ฌ ๋ฐ์
Fetch ๊ธฐ๋ณธ ์ ๋ต
๊ฐ JPA ์ฐ๊ด๊ด๊ณ ์ ๋
ธํ
์ด์
์ ๊ธฐ๋ณธ fetch ์ ๋ต์ ๊ฐ์ง๊ณ ์๋ค
โข
@OneToOne: FetchType.EAGER
โข
@ManyToOne: FetchType.EAGER
โข
@OneToMany: FetchType.LAZY
โข
@ManyToMany: FetchType.LAZY