728x90
Q-Type
์ฟผ๋ฆฌdsl์ ์ฌ์ฉํ๋ฉด QType์ ํตํด ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
QType์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Qํด๋์ค ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ
- new QMember("m") : ๋ณ์นญ(alias)์ ์ง์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
- JPQL ์คํ ์ select m From Member m ~~ ์์ผ๋ก ์์ฑ๋ฉ๋๋ค.
- QMember.member : QueryDSL์ด ๊ธฐ๋ณธ์ผ๋ก ์์ฑํด์ฃผ๋ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค
- static-import๋ฅผ ์ฌ์ฉํ๋ฉด ๊น๋ํ๊ฒ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.
๋ณ์นญ์ ์ง์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ ํ ์ด๋ธ์ Joinํ๋ ๊ฒฝ์ฐ ํน์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ณ์นญ ์ง์ ์ง์
@Test
@DisplayName("Qํ์
์ง์ ์์ฑํ๊ธฐ")
fun testQuerydslV1() {
//member1์ ์ฐพ์๋ผ
val query = JPAQueryFactory(em)
val m = QMember("m")
val username = "member1"
val findByQueryDsl = query.select(m)
.from(m)
.where(m.username.eq(username))
.fetchOne()
assertThat(findByQueryDsl?.username).isEqualTo(username)
}
๊ธฐ๋ณธ ์ธ์คํด์ค ๋ฐ๋ก ์ฌ์ฉ
@Test
@DisplayName("Q ํ์
๊ธฐ๋ณธ ์ธ์คํด์ค๋ก ์ฌ์ฉํ๊ธฐ (๋ณ์์ ํ ๋น)")
fun testQuerydslV2() {
//member1์ ์ฐพ์๋ผ
val query = JPAQueryFactory(em)
val m = QMember.member
val username = "member1"
val findByQueryDsl = query.select(m)
.from(m)
.where(m.username.eq(username))
.fetchOne()
assertThat(findByQueryDsl?.username).isEqualTo(username)
}
Static - Import ์ฌ์ฉํ๊ธฐ
@Test
@DisplayName("Q ํ์
Static Import ๋ก ์ฌ์ฉํ๊ธฐ")
fun testQuerydslV3() {
//member1์ ์ฐพ์๋ผ
val query = JPAQueryFactory(em)
val username = "member1"
val findByQueryDsl = query.select(member)
.from(member)
.where(member.username.eq(username))
.fetchOne()
assertThat(findByQueryDsl?.username).isEqualTo(username)
}
JPAQueryFactory
QueryDSL์ ์ฌ์ฉํ๋ ค๋ฉด JPAQueryFactory ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ์์ฑ์๋ก๋ EntityManager๋ฅผ ๋ฃ์ด์ฃผ์ด์ผ ํฉ๋๋ค.
val em: EntityManager
val query: JPAQueryFactory = JPAQueryFactory(em)
JPAQueryFactory Bean์ผ๋ก ๋ฑ๋กํ์ฌ ์ฌ์ฉํ๊ธฐ
@Configuration
class QueryDslConfig(
val em: EntityManager
){
@Bean
fun jpaQueryFactory() = JPAQueryFactory(em)
}
์๋์ ๊ฐ์ด ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.
class MemberQueryRepositoryImpl(
private val query: JPAQueryFactory
) ...
Reference
728x90
'๐๏ธ Spring > QueryDsl' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[QueryDSL] GroupBy (0) | 2021.12.23 |
---|---|
[QueryDSL] ์ง๊ณ ํจ์(count, sum, avg, max, min) (0) | 2021.12.23 |
[QueryDSL] ์ ๋ ฌ - orderBy() (0) | 2021.12.23 |
[QueryDSL] ๊ฒฐ๊ณผ ์กฐํ (0) | 2021.12.23 |
[QueryDSL] ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ (3) | 2021.12.23 |