π₯οΈ λ°±μλ/SpringBoot
[JPA] κ°μ²΄μ§ν₯ 쿼리 μΈμ΄ - μ€κΈ λ¬Έλ²(1)
OR15A
2023. 11. 26. 23:00
κ²½λ‘ ννμ
- .(μ )μ μ°μ΄ κ°μ²΄ κ·Έλνλ₯Ό νμνλ κ²
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 νλμ μ€μ ν¬μΈνΈ
• 묡μμ μ‘°μΈμ μ‘°μΈμ΄ μΌμ΄λλ μν©μ νλμ νμ νκΈ° μ΄λ €μ