Home > Spring > ๐Ÿƒ[Spring] ์—ฐ๊ด€๊ด€๊ณ„ ์‚ฌ์šฉ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?

๐Ÿƒ[Spring] ์—ฐ๊ด€๊ด€๊ณ„ ์‚ฌ์šฉ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?
Spring Framework

๐Ÿƒ[Spring] ์—ฐ๊ด€๊ด€๊ณ„ ์‚ฌ์šฉ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?

  • JPA์—์„œ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ธก๋ฉด์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์ ์ ˆํžˆ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜, ๋ณต์žกํ•œ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ €ํ•˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

1๏ธโƒฃ ์—ฐ๊ด€๊ด€๊ณ„ ์‚ฌ์šฉ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ํ•ญ๋ชฉ๋“ค.

1๏ธโƒฃ ์—ฐ๊ด€๊ด€๊ณ„์˜ ๋ฐฉํ–ฅ(๋‹จ๋ฐฉํ–ฅ vs ์–‘๋ฐฉํ–ฅ)

1๏ธโƒฃ ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„.

  • ํ•œ์ชฝ ์—”ํ‹ฐํ‹ฐ๋งŒ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.
  • ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์„ค๊ณ„์™€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์„ฑ๋Šฅ ์ตœ์ ํ™”์—๋„ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„.

  • ์„œ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ด€๊ณ„๋กœ, ๋‘ ์—”ํ‹ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์„œ๋กœ ์ฐธ์กฐํ•˜๋ฉด์„œ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”(Serialization)

๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”(Serialization)๋Š” ๊ฐ์ฒด ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ์ฒด๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ, ์—ญ์ง๋ ฌํ™”(Deserialization)๋Š” ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์›๋ž˜์˜ ๊ฐ์ฒด๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณต์›ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ ์„ ํƒ ๊ธฐ์ค€.

  • ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์šฐ์„ ์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ , ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ(Owning Side)

  • ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์—์„œ๋Š” ์™ธ๋ž˜ ํ‚ค(Foreign Key)๋ฅผ ๊ด€๋ฆฌํ•  ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์„ ๋ช…ํ™•ํžˆ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹ค์ œ ์™ธ๋ž˜ ํ‚ค(Foreign Key)๋ฅผ ์ €์žฅํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ๋กœ, ์ฃผ์ธ์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ์—์„œ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์ธ์„ ์ •ํ™•ํ•˜๊ฒŒ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆํ•„์š”ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๏ธโƒฃ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)๊ณผ ์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loading)

1๏ธโƒฃ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading).

  • ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ด€ ๊ด€๊ณ„๋Š” ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌํ•˜๋ฉฐ, ํ•„์š”ํ•œ ์ˆœ๊ฐ„์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loading).

  • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์—ฐ๊ด€๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ํ•„์š” ์ด์ƒ์œผ๋กœ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ N+1 ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๏ธโƒฃ ์„ ํƒ ๊ธฐ์ค€.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ณ , ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loading)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loading)์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ๊ด€๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ, ํŠน์ • ์กฐํšŒ ์‹œ ํ•œ ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)

1๏ธโƒฃ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์—์„œ์˜ ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)

  • ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์—์„œ N+1 ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ JPQL ์ฟผ๋ฆฌ์—์„œ ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)

  • ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)์€ JPQL ์ฟผ๋ฆฌ์—์„œ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ธํ•˜์—ฌ ํ•จ๊ป˜ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 3๏ธโƒฃ ์„ ํƒ ๊ธฐ์ค€.

  • ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)์€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ฟผ๋ฆฌ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ Cascade ์˜ต์…˜๊ณผ orphanRemoval

1๏ธโƒฃ Cascade ์˜ต์…˜.

  • ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ์—์„œ ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก CascadeType.PERSIST, CascadeType.REMOVE ๋“ฑ์˜ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋„ ์ž๋™์œผ๋กœ ์ €์žฅ๋˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ orphanRemoval ์˜ต์…˜.

  • ๋ถ€๋ชจ์™€์˜ ๊ด€๊ณ„๊ฐ€ ๋Š๊ธด ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ์—์„œ ์ž์‹ ์—”ํ‹ฐํ‹ฐ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ์„ ํƒ ๊ธฐ์ค€.

  • Cascade์™€ orphanRemoval์€ ๋ถ€๋ชจ์™€ ์ž์‹ ๊ฐ„ ์ƒ๋ช… ์ฃผ๊ธฐ๊ฐ€ ์™„์ „ํžˆ ์ผ์น˜ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜๋„์น˜ ์•Š์€ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋‚˜ ์˜์†์„ฑ ์ „ํŒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ์˜์†์„ฑ ์ „ํŒŒ(Persistence Propagation)

JPA์—์„œ ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ์— ์ˆ˜ํ–‰ํ•œ ์˜์†์„ฑ ์ž‘์—…์ด ์—ฐ๊ด€๋œ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์— ์ž๋™์œผ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํŠน์ • ์˜์†์„ฑ ์ƒํƒœ(์˜ˆ: ์ €์žฅ, ์‚ญ์ œ, ๋ณ‘ํ•ฉ ๋“ฑ)๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ, ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋„ ๋™์ผํ•œ ์ƒํƒœ๋กœ ์ „์ด๋  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JPA์—์„œ๋Š” ์ด๋ฅผ ์œ„ํ—ค Cascade ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ฃผ๋กœ ์—ฐ๊ด€๋œ ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํ•˜๋‚˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๋ถ€๋ชจ์™€ ์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์žˆ์„ ๋•Œ, ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์† ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด, ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋„ ๊ฐ™์€ ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

6๏ธโƒฃ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์ตœ์ ํ™”.

  • ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ์กฐํšŒ๋˜์ง€ ์•Š๋„๋ก JPQL, ๋„ค์ดํ‹ฐ๋ธŒ SQL, DTO ๋“ฑ์„ ํ™œ์šฉํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ DTO๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก.

  • ์—”ํ‹ฐํ‹ฐ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด๋Š” ๋Œ€์‹ , ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋‹ด์€ DTO(Data Transfer Object)๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7๏ธโƒฃ ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ •์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ์ง€ ๊ฒ€ํ† .

  • ๋ชจ๋“  ๊ด€๊ณ„๋ฅผ ์—ฐ๊ด€๊ด€๊ณ„๋กœ ์„ค์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
    • ๋‹จ์ˆœํžˆ ID๋งŒ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„๋ผ๋ฉด, ๊ตณ์ด ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๊ณ„๋ฅผ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ ๊ฐ„ ์—ฐ๊ด€๊ด€๊ณ„๋กœ ์„ค์ •ํ•˜๋ฉด ์˜คํžˆ๋ ค ์„ค๊ณ„๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์„ฑ๋Šฅ์„ ํ•ด์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8๏ธโƒฃ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๊ด€๋ฆฌ.

  • ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์™€ ์—ฐ๊ด€ ๊ด€๊ณ„ ์„ค์ •์„ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์‹ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ์— ๊ฐ•ํ•˜๊ฒŒ ์ข…์†๋œ ๊ฒฝ์šฐ(์˜ˆ: ์ฃผ๋ฌธ๊ณผ ์ฃผ๋ฌธ ํ•ญ๋ชฉ)์—๋Š” ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ , Cascade ์˜ต์…˜์„ ํ†ตํ•ด ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

9๏ธโƒฃ ์š”์•ฝ.

  • ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • ๋‹จ๋ฐฉํ–ฅ๊ณผ ์–‘๋ฐฉํ–ฅ ์ค‘ ํ•„์š”ํ•œ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ , ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์ฃผ์ธ์„ ๋ช…ํ™•ํžˆ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ํ•„์š”ํ•  ๋•Œ๋งŒ ์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loding)์ด๋‚˜ ํŽ˜์น˜ ์กฐ์ธ(Fetch Join)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • Cascade ์˜ต์…˜๊ณผ orphanRemoval์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์ตœ์ ํ™”ํ•˜๊ณ , ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ด€๊ณ„๋Š” ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.