select ํ๋ก์ ์
์ ์ปฌ๋ผ์ด ํ๋ ๋๋ ํ
์ด๋ธ ์ ์ฒด๋ผ๋ฉด ํด๋น ํ์
์ผ๋ก ์กฐํ ๊ฐ๋ฅ
์ปฌ๋ผ์ด ๋ ์ด์์ด๋ฉด Tuple ๋๋ Dto ๋ก ์กฐํํด์ผํจ
Tuple
querydsl.core ํจํค์ง
์์ํ ๊ณ์ธต๊น์ง๋ง, ์๋น์ค ๊ณ์ธต๊น์ง ๋์ด๊ฐ๋ฉด ์ข์ ์ค๊ณ๊ฐ ์๋๋ค. ์์กด์ฑ ๋ฐฉํฅ ์ธก๋ฉด์์ ํ๋ถ ๊ณ์ธต์ด ์๋ถ ๊ณ์ธต์ ์ข
์๋๊ธฐ๋๋ฌธ
Dto
โข
JPQL
JPQL ์์๋ ์์ฑ์๋ก ๋ง๋ค์ด์ฃผ์ด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค. ๋ํ ์์ฑ์ ๋ฐฉ์๋ง ์ง์ํ๋ค.
select new com.example.dto.MemberDto(m.username, m.age) from Member m
โข
setter
getter, setter, ๊ธฐ๋ณธ ์์ฑ์ ํ์
select(Projections.bean(MemberDto.class, member.username, member.age))
โข
field ์ ๊ทผ ๋ฐฉ์
getter, setter ๋ถํ์
select(Projections.field(MemberDto.class, member.username, member.age))
โข
constructor ๋ฐฉ์
select(Projections.constructor(MemberDto.class, member.username, member.age))
โข
Q ํ์
๋ฐฉ์
Dto ์ @QueryProjection ์ ํ๋ฉด dto ๋ Q ํ์
๊ฐ์ฒด๋ก ์์ฑ๋๋ค.
select(new QMemberDto(member.username, member.age))
constructor ๋ฐฉ์๊ณผ ๋ค๋ฅธ์ :
constructor ๋ฐฉ์์ dto ํ๋๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ๋ณ๊ฒฝ์ ์ compile ๋จ๊ณ์์ ์ก์ ์ ์๋ค. ์ธ์๊ฐ ๊ฐ๋ณ์ธ์๊ธฐ๋๋ฌธ์!
์์กด ๋ฐฉํฅ์ ๋ํ ๋ฌธ์ ์ ์ด ์์ ์ ์๋ค.