๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/SpringBoot

[JPA] ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด - ์ค‘๊ธ‰ ๋ฌธ๋ฒ•(1)

by OR15A 2023. 11. 26.

๊ฒฝ๋กœ ํ‘œํ˜„์‹

  • .(์ )์„ ์ฐ์–ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ
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 ์ ˆ์—์„œ ๋ช…์‹œ์  ์กฐ์ธ์„ ํ†ตํ•ด ๋ณ„์นญ์„ ์–ป์œผ๋ฉด ๋ณ„์นญ์„ ํ†ตํ•ด ํƒ์ƒ‰ ๊ฐ€๋Šฅ
  • ๋ฌต์‹œ์  ์กฐ์ธ ์‚ฌ์šฉ ๊ถŒ์žฅ 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 ํŠœ๋‹์— ์ค‘์š” ํฌ์ธํŠธ
• ๋ฌต์‹œ์  ์กฐ์ธ์€ ์กฐ์ธ์ด ์ผ์–ด๋‚˜๋Š” ์ƒํ™ฉ์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›€