2022. 10. 6. 13:32ใ์ธํ๋ฐ/์ค์ ! QueryDSL
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard
์ธํ๋ฐ - ์ค์ ! QueryDSL ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค. ๐
https://hyejin.tistory.com/740?category=1091560
์น์ 2์์ ํ๋ ์์ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์คํ๋ง ๋ฐ์ดํฐ JPA์ ๋์ผํ๋ค๊ณ ํ๋ค.
๊ทธ๋์ ๊ทธ๋ฅ ์น์ 2 ์ ๋ฆฌ๋ ๋์ด๊ฐ๊น ํ๋ค๊ฐ ๊ทธ๋ฅ ์๊ฐ๋ ๋จ๊ณ , ๋ณต์ต๋ ํ ๊ฒธ ์ ๋ฆฌํ๋ค.
1๏ธโฃ ์์ ๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ ๋์ ํ์ธ
๊ฐ๋จํ ๋๋ฉ์ธ ๋ชจ๋ธ์ด๋ค.
Member์ Team์ ์ผ๋๋ค ๊ด๊ณ๋ก ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ ๋งคํํด์ฃผ๋ฉด ๋๋ค.
Member ์ํฐํฐ
@Setter
: ์ค๋ฌด์์๋ ๊ฐ๊ธ์ @Setter ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. (์์ฑ์๋ก ํด๊ฒฐํ๋๊ฒ ์ข์)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
: ๊ธฐ๋ณธ ์์ฑ์๋ public ์ผ๋ก ์ด์ด๋๋ฉด ์ฌ๊ธฐ์ ๊ธฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒ ๊ฐ์์ ๋ง๊ณ ์ถ์๋ฐ, JPA๋ ์คํ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ PROTECTED๊น์ง๋ ์ด์ด๋ฌ์ผ ํด์ AccessLevel์ PROTECTED๋ก ์ค์ ํด์คฌ๋ค.
@ToString()
: toString ๋ฅผ ์ฌ์ฉํ ๋๋ ์ฐ๊ด๊ด๊ณ๊ฐ ์๋ ํ๋๋ง ์ค์ ํด์ค์ผ ํ๋ค.
์๋ํ๋ฉด Team ์ ํฌํจํด๋ฒ๋ฆฌ๋ฉด ๋ฌดํ ๋ฃจํ๋ก Team์์ member๋ฅผ ํธ์ถํ๊ณ , member๊ฐ team์ ํธ์ถํ๊ณ ...
์ด๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค.
@ManyToOne(fetch= FetchType.LAZY)
: XToOne ๊ด๊ณ๋ ๊ธฐ๋ณธ ์ ๋ต์ด EAGER๋ผ์ LAZY๋ก ์ค์ ํด ๋ชจ๋ ์ฐ๊ด๊ด๊ณ๋ ์ง์ฐ ๋ก๋ฉ ์ ๋ต์ผ๋ก ํด์ผ ํ๋ค.
changeTeam()
: Member์ Team์ด ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ Member์ Team์ ์ค์ ํด์ฃผ๊ณ ,
๋ฐ๋๋ก Team์ Member List์๋ Member๋ฅผ ์ธํ ํด์ค์ผ ํ๋ค.
Team ์ํฐํฐ
@OneToMany(mappedBy = "team")
Member์ Team์ ์ง๊ธ ์ผ๋๋ค ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์ด๋ค.
์ด๋ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ์ธ๋ํค๊ฐ ์๋ ์ชฝ์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ Member.Team์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด๊ณ , Team.members๋ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด ์๋๋ค.
๋ฐ๋ผ์ Member.Team์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ํค ๊ฐ์ ๋ณ๊ฒฝํ๊ณ , ๋ฐ๋ํธ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋ค.
๋ฐ์ดํฐ ํ์ธ ํ ์คํธ
MemberTest
@SpringBootTest
: ํ ์คํธ์์ ์คํ๋ง์ ๋์์ ํ ์คํธ๋ฅผ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ค๋ค.
@Transactional
: JPA์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ํธ๋์ญ์ ์์์ ๋์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ ๊ฑธ์ด์ค๋ค.
์ด ์ด๋ ธํ ์ด์ ์ TEST์ ์์ผ๋ฉด ํ ์คํธ๊ฐ ๋๋๊ณ ์์์ ๋กค๋ฐฑํด์ค์ DB์ ํ ์คํธ ๋ฐ์ดํฐ๊ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ก ํ๋ค.
MemberTest ํ ์คํธ๊ฐ ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์๋ ํ ์คํธ๋ฉด ์ด๋ ๊ฒ Sysout์ผ๋ก ์ถ๋ ฅํด์ ํ๋๊ฒ ์๋๋ผ ์๋์ผ๋ก ํ ์คํธ๋ฅผ ํ๋๊ฒ ์ข์๋ฐ
์ด๊ฑด ํ ์คํธ ์์ ๊ฐ ๊ฐ๋จํ๊ณ ํ์ตํ๋๊ฑฐ๋๊น ์ด๋ ๊ฒ ํ๊ณ ๋์ด๊ฐ๋ค๊ณ ํ๋ค~..