๐Ÿ“

์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์™€ ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ

ํƒœ๊ทธ

๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์–‘๋ฐฉํ–ฅ ๋งคํ•‘

notion image

mappedBy

  • mappedBy = JPA์˜ ๋ฉ˜ํƒˆ๋ถ•๊ดด ๋‚œ์ด๋„์— ํ•ด๋‹นํ•œ๋‹ค..!
  • mappedBy๋Š” ์ฒ˜์Œ์— ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”๊ฐ„ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ์ฐจ์ด๋ฅผ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค.

๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์ด ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ์ฐฝ

๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„ = 2๊ฐœ

  • ํšŒ์› > ํŒ€ ์—ฐ๊ด€๊ด€๊ณ„ 1๊ฐœ(๋‹จ๋ฐฉํ–ฅ)
  • ํŒ€ > ํšŒ์› ์—ฐ๊ด€๊ด€๊ณ„ 1๊ฐœ(๋‹จ๋ฐฉํ–ฅ)

ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„ = 1๊ฐœ

  • ํšŒ์› <-> ํŒ€์˜ ์—ฐ๊ด€๊ด€๊ณ„ 1๊ฐœ(์–‘๋ฐฉํ–ฅ)

๊ฐ์ฒด์˜ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„

  • ๊ฐ์ฒด์˜ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋Š” ์‚ฌ์‹ค ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋กœ๋‹ค๋ฅธ ๋ฐฉํ–ฅ๊ด€๊ณ„ 2๊ฐœ๋‹ค
  • ๊ฐ์ฒด๋ฅผ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ฐธ์กฐํ•˜๋ ค๋ฉด ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ 2๊ฐœ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.
class A { B b; // a.getB(); } class B { A a; // b.getA(); }

ํ…Œ์ด๋ธ”์˜ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„

  • ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ํ‚ค ํ•˜๋‚˜๋กœ ์กฐ์ธ์„ ํ†ตํ•ด ๋‘ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ(Owner)

์–‘๋ฐฉํ–ฅ ๋งคํ•‘ ๊ทœ์น™

  • ๊ฐ์ฒด์˜ ๋‘ ๊ด€๊ณ„์ค‘ ํ•˜๋‚˜๋ฅผ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.
  • ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ๋งŒ์ด ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์ฃผ์ธ์ด ์•„๋‹Œ์ชฝ์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฃผ์ธ์€ mappedBy ์†์„ฑ ์‚ฌ์šฉX
  • ์ฃผ์ธ์ด ์•„๋‹ˆ๋ฉด mappedBy ์†์„ฑ์œผ๋กœ ์ฃผ์ธ ์ง€์ •

๋ˆ„๊ตฌ๋ฅผ ์ฃผ์ธ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ?

์™ธ๋ž˜ํ‚ค๋ฅผ ์ฃผ์ธ์œผ๋กœ ์ง€์ •ํ•˜๋ผ.

์–‘๋ฐฉํ–ฅ ๋งคํ•‘ ์‹œ ๊ฐ€์žฅ ๋งŽ์ดํ•˜๋Š” ์‹ค์ˆ˜

  • ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์— ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์Œ..

์ˆœ์ˆ˜ ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•ด์„œ ํ•ญ์ƒ ์–‘์ชฝ ๊ฐ’์— ๊ฐ’์„ ์„ค์ •ํ•˜์ž

  • ์—ฐ๊ด€๊ด€๊ณ„์˜ ํŽธ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ž.
  • ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์‹œ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ์กฐ์‹ฌํ•˜์ž.
    • toString, lombok, JSON ์ƒ์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ

์–‘๋ฐฉํ–ฅ ๋งคํ•‘ ์ •๋ฆฌ

  • ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘๋งŒ์œผ๋กœ๋„ ์ด๋ฏธ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์€ ์™„๋ฃŒ์ด๋‹ค.
  • ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์กฐํšŒ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ ๋ฟ์ด๋‹ค.
  • JPQL์—์„œ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•  ์ผ์ด ๋งŽ๋‹ค.
  • ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘์„ ์ž˜ ํ•˜๊ณ  ์–‘๋ฐฉํ–ฅ์€ ํ•„์š”ํ•  ๋•Œ ์ถ”๊ฐ€ํ•ด๋„ ๋œ๋‹ค.

์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์„ ์ •ํ•˜๋Š” ๊ธฐ์ค€

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์„ ์„ ํƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์€ ์™ธ๋ž˜ ํ‚ค์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •ํ•ด์•ผํ•œ๋‹ค.