jiisoo
์ง€์ˆ˜๋กœ๊ทธ
jiisoo
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • home
  • Github
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ €์žฅ์†Œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (80)
    • Java (1)
    • Spring (30)
    • JPA (15)
    • cs (8)
      • ๋””์ž์ธํŒจํ„ด (1)
      • ๋„คํŠธ์›Œํฌ (5)
      • Database (1)
      • ์šด์˜์ฒด์ œ (1)
    • algorithm (18)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋ก  (12)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด (6)
    • ๋ฉด์ ‘ ์ค€๋น„ (0)
    • ํšŒ๊ณ  (5)
      • ATDD (4)
      • ํ•™์Šตํ…Œ์ŠคํŠธ๋กœ ๋ฐฐ์šฐ๋Š” spring 2๊ธฐ (1)
      • ํ”„๋กœ์ ํŠธ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํƒœ๊ทธ

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
jiisoo

์ง€์ˆ˜๋กœ๊ทธ

[Jpa] ํ”„๋ก์‹œ๋ž€
JPA

[Jpa] ํ”„๋ก์‹œ๋ž€

2023. 5. 30. 10:28

๐Ÿ’ก ํ”„๋ก์‹œ๋ž€ 

  • ํ”„๋ก์‹œ๋ž€ ๋ฌด์—‡์ผ๊นŒ?
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ Member ๋ฅผ ์กฐํšŒํ•ด์•ผ ํ•  ๋•Œ Team ๋„ ํ•จ๊ป˜ ์กฐํšŒํ•ด์•ผ ํ• ๊นŒ?

  • ๊ฐ™์ด ๋•ก๊ฒจ์™€์„œ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ƒ๊ด€์—†์ง€๋งŒ
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋ฐ ๋•ก๊ฒจ์™€์„œ ์“ด๋‹ค๋Š” ๊ฒƒ์€ ์ตœ์ ํ™”๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

โ—๏ธ ํ”„๋ก์‹œ ๊ธฐ์ดˆ

  • jpa ์—์„œ๋Š” em.getReference( ) ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • em.find( ) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด์„œ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•œ๋‹ค.
    • em.getReference( ) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ๋ฅผ ๋ฏธ๋ฃจ๋Š” ๊ฐ€์งœ(ํ”„๋ก์‹œ) ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•œ๋‹ค.
      • DB์— ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜๊ฐ€์ง€ ์•Š์ง€๋งŒ, ๊ฐ์ฒด๊ฐ€ ์กฐํšŒ๋œ๋‹ค.
       

  • ๊ป๋ฐ๊ธฐ๋Š” ๋˜‘๊ฐ™์ง€๋งŒ ํ……ํ…… ๋นˆ ๊ฒƒ์ด๊ณ , target ์€ ์ง„์งœ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

 

 

โœ”๏ธŽ ํ”„๋ก์‹œ ํŠน์ง•

  • ์‹ค์ œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.
  • ์‹ค์ œ ํด๋ž˜์Šค์™€ ๊ฒ‰ ๋ชจ์–‘์ด ๊ฐ™๊ธฐ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” ์ง„์งœ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌ๋ถ„ํ•  ํ•„์š”์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

  • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ ํ”„๋ก์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ ๋‹ค.
  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ์ฐธ์กฐ(target)์„ ๋ณด๊ด€ํ•œ๋‹ค.
  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

 

 

โœ”๏ธŽ ํ”„๋ก์‹œ ๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™” 

Member member = em.getRefernce(Member.class, "id1");
member.getName();

  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜จ ๋‹ค์Œ
  • member.getName( ) ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด 
  • ์ฒ˜์Œ์—๋Š” Member target ์— ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— JPA ๊ฐ€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ง„์งœ Member ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋ผ๊ณ  ์š”์ฒญํ•œ๋‹ค.
  • ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” DB๋ฅผ ์กฐํšŒํ•ด์„œ ์‹ค์ œ Entity ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ณ  target ๊ณผ ์ง„์งœ ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ง„์งœ ๊ฐ์ฒด์˜ getName( ) ์ด ํ˜ธ์ถœ๋˜๋ฉด์„œ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

 

 

โญ๏ธ ํ”„๋ก์‹œ ์ค‘์š” ํŠน์ง• โญ๏ธ

  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.
  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ, ํ”„๋ก์‹œ ๊ฐ์ฒด๊ฐ€ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜๋ฉด ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๋Š”๊ฒƒ.
  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋Š” ์›๋ณธ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž… ์ฒดํฌ์‹œ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.
    • (== ๋น„๊ต ์‹คํŒจ, ๋Œ€์‹  instance of ์‚ฌ์šฉ)
  • ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ฐพ๋Š” ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด em.getReference( ) ๋ฅผ ํ˜ธ์ถœํ•ด๋„ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์—†๋Š” ์ค€์˜์† ์ƒํƒœ์ผ๋•Œ, ํ”„๋ก์‹œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ org.hibernate.LazyInitalizationException ์˜ˆ์™ธ๋ฅผ ํ„ฐํŠธ๋ฆฐ๋‹ค.
  • JPA ํ‘œ์ค€์€ ๊ฐ•์ œ ์ดˆ๊ธฐํ™”๊ฐ€ ์—†๋‹ค.
  • ๊ฐ•์ œ ํ˜ธ์ถœ : member.getName( ) 

 

 

 

 

<์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.>

 
 

'JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Jpa] ์˜์†์„ฑ ์ „์ด(CASCADE) ์™€ ๊ณ ์•„ ๊ฐ์ฒด  (0) 2023.06.08
[Jpa] ์ฆ‰์‹œ๋กœ๋”ฉ๊ณผ ์ง€์—ฐ๋กœ๋”ฉ  (0) 2023.06.01
[Jpa] ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘  (0) 2023.05.22
[Jpa] ๋‹ค๋Œ€๋‹ค [N:N] ์— ๋Œ€ํ•ด์„œ  (0) 2023.05.17
[Jpa] ๋‹ค๋Œ€์ผ[N:1], ์ผ๋Œ€๋‹ค[1:N] ์— ๋Œ€ํ•ด์„œ  (0) 2023.05.09
    'JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Jpa] ์˜์†์„ฑ ์ „์ด(CASCADE) ์™€ ๊ณ ์•„ ๊ฐ์ฒด
    • [Jpa] ์ฆ‰์‹œ๋กœ๋”ฉ๊ณผ ์ง€์—ฐ๋กœ๋”ฉ
    • [Jpa] ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘
    • [Jpa] ๋‹ค๋Œ€๋‹ค [N:N] ์— ๋Œ€ํ•ด์„œ
    jiisoo
    jiisoo

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”