๊ฒฝ๋ก ํํ์
- .(์ )์ ์ฐ์ด ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ํ์ํ๋ ๊ฒ
select m.username -> ์ํ ํ๋
from Member m
join m.team t -> ๋จ์ผ ๊ฐ ์ฐ๊ด ํ๋
join m.orders o -> ์ปฌ๋ ์
๊ฐ ์ฐ๊ด ํ๋
where t.name = 'ํA'
- ๋ด๋ถ์ ์ผ๋ก ๋์ํ๋ ๋ฐฉ์ ๊ตฌ๋ถ
- ์ํํ๋
- ๋จ์ผ ๊ฐ ์ฐ๊ดํ๋
- ์ปฌ๋ ์ ๊ฐ ์ฐ๊ดํ๋
๊ฒฝ๋ก ํํ์ ์ฉ์ด ์ ๋ฆฌ ๋ฐ ์ค๋ช
- ์ํ ํ๋(state field)
- ๋จ์ํ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ํ๋ (ex: m.username)
- ๊ฒฝ๋ก ํ์์ ๋, ํ์X
#๋จ์ผ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก ํ์
[JPQL]
select o.member from Order o;
[SQL]
select m.*
from Orders o
inner join Member m on o.member_id = m.id;
- ์ฐ๊ด ํ๋(association field)
- ์ฐ๊ด๊ด๊ณ๋ฅผ ์ํ ํ๋
- ๋จ์ผ ๊ฐ ์ฐ๊ด ํ๋ : @ManyToOne, @OneToOne, ๋์์ด ์ํฐํฐ(ex: m.team)
- ๋ฌต์์ ๋ด๋ถ ์กฐ์ธ(inner join) ๋ฐ์, ํ์O
#๋จ์ผ ๊ฐ ์ฐ๊ด ๊ฒฝ๋ก ํ์
[JPQL]
select o.member from Order o;
[SQL]
select m.*
from Orders o
inner join Member m on o.member_id = m.id;
#์ฌ๊ธฐ์ ์๊ธฐ๋ ๋ฌต์์ ์กฐ์ธ์ ๋งค์ฐ ์ํ.!
-
- ์ปฌ๋ ์
๊ฐ ์ฐ๊ด ํ๋ : @OneToMany, @ManyToMany, ๋์์ด ์ปฌ๋ ์
(ex: m.orders)
- ๋ฌต์์ ๋ด๋ถ ์กฐ์ธ ๋ฐ์, ํ์X
- FROM ์ ์์ ๋ช ์์ ์กฐ์ธ์ ํตํด ๋ณ์นญ์ ์ป์ผ๋ฉด ๋ณ์นญ์ ํตํด ํ์ ๊ฐ๋ฅ
- ์ปฌ๋ ์
๊ฐ ์ฐ๊ด ํ๋ : @OneToMany, @ManyToMany, ๋์์ด ์ปฌ๋ ์
(ex: m.orders)
- ๋ฌต์์ ์กฐ์ธ ์ฌ์ฉ ๊ถ์ฅ XXX
๋ช ์์ง ์กฐ์ธ, ๋ฌต์์ ์กฐ์ธ
- ๋ช
์์ ์กฐ์ธ
- join ํค์๋ ์ง์ ์ฌ์ฉ
- select m from Member m join m.team t
- ๋ฌต์์ ์กฐ์ธ
- ๊ฒฝ๋ก ํํ์์ ์ํด ๋ฌต์์ ์ผ๋ก SQL ์กฐ์ธ ๋ฐ์(๋ด๋ถ ์กฐ์ธ๋ง ๊ฐ๋ฅ)
- select m.team from Member m
์์
select o.member.team from Order o -> ์ฑ๊ณต
select t.members from Team -> ์ฑ๊ณต
select t.members.username from Team t -> ์คํจ
select m.username from Team t join t.members m -> ์ฑ๊ณต
์ค๋ฌด ์กฐ์ธ
• ๊ฐ๊ธ์ ๋ฌต์์ ์กฐ์ธ ๋์ ์ ๋ช ์์ ์กฐ์ธ ์ฌ์ฉ
• ์กฐ์ธ์ SQL ํ๋์ ์ค์ ํฌ์ธํธ
• ๋ฌต์์ ์กฐ์ธ์ ์กฐ์ธ์ด ์ผ์ด๋๋ ์ํฉ์ ํ๋์ ํ์ ํ๊ธฐ ์ด๋ ค์
'๐ฅ๏ธ ๋ฐฑ์๋ > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[API] API ๊ณ ๊ธ ์ค๊ณ - ์ง์ฐ ๋ก๋ฉ๊ณผ ์กฐํ ์ฑ๋ฅ ์ต์ ํ (1) | 2023.11.28 |
---|---|
[JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ์ค๊ธ ๋ฌธ๋ฒ(2) (1) | 2023.11.27 |
[JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ (2) (1) | 2023.11.26 |
[JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ (1) (1) | 2023.11.26 |
[์คํ๋ง๋ถํธ ํต์คํํธ] ch.5 ์คํ๋ง๋ฐ์ดํฐ JPA (0) | 2023.11.23 |