KKG
Programming
KKG
전체 방문자
였늘
μ–΄μ œ
  • 전체 κΈ€ 보기 (84)
    • 회고 (9)
    • Bootcamp (19)
    • Error Handling (2)
    • Kotlin (1)
    • Java (19)
      • Java (14)
      • Spring (1)
      • JPA (2)
      • Link (2)
    • Python (5)
    • μ•Œκ³ λ¦¬μ¦˜ (20)
      • μ•Œκ³ λ¦¬μ¦˜ (4)
      • λ°±μ€€ (14)
      • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ (1)
      • Link (1)
    • SQL (5)
      • SQL (1)
      • MySQL (4)
    • Web (2)
    • etc (1)

λΈ”λ‘œκ·Έ 메뉴

  • νƒœκ·Έ
  • λ°©λͺ…둝
  • κΉƒν—ˆλΈŒ

인기 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
KKG

Programming

Java/JPA

[JPA] νŒ¨ν„΄, μ€€μ˜μ† μ—”ν‹°ν‹°

2022. 9. 19. 00:58

πŸ“„ 도메인 λͺ¨λΈ νŒ¨ν„΄

  • μ—”ν‹°ν‹° μ•ˆμ— λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 ν¬ν•¨λœ νŒ¨ν„΄
  • 객체지ν–₯을 ν™œμš©ν•˜λŠ” 기법

πŸ“„ νŠΈλžœμž­μ…˜ 슀크립트 νŒ¨ν„΄

μ„œλΉ„μŠ€ κ³„μΈ΅μ—μ„œ λͺ¨λ“  λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” νŒ¨ν„΄

 

 

[λ””μžμΈνŒ¨ν„΄] Domain Model Pattern vs Transaction Script Pattern

Domain Model Pattern [도메인 λͺ¨λΈ νŒ¨ν„΄]μ΄λž€? λŒ€λΆ€λΆ„μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μ—”ν‹°ν‹° μ•ˆμ— κ΅¬μ„±λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. μ„œλΉ„μŠ€ 계측은 엔티티에 ν•„μš”ν•œ 역할을 μœ„μž„ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ—”ν‹°ν‹° μ•ˆμ— λΉ„μ¦ˆλ‹ˆμŠ€ 둜직

applepick.tistory.com

πŸ“„ μ€€μ˜μ† μ—”ν‹°ν‹°

  • μ˜μ†μ„± μ»¨ν…μŠ€νŠΈκ°€ 더 이상 κ΄€λ¦¬ν•˜μ§€ μ•ŠλŠ” μ—”ν‹°ν‹°
  • μž„μ˜λ‘œ λ§Œλ“  엔티티도 μ‹λ³„μžλ₯Ό κ°–κ³  μžˆλ‹€λ©΄ μ€€μ˜μ† μ—”ν‹°ν‹°λ‘œ λ³Ό 수 μžˆλ‹€.

μ€€μ˜μ† μ—”ν‹°ν‹°λ₯Ό μˆ˜μ •ν•˜λŠ” 방법

1. μ˜μ† μ—”ν‹°ν‹°λ₯Ό 가져와 λ³€κ²½ 감지 dirty check κΈ°λŠ₯ μ‚¬μš©

2. 병합 em.merge(item) μ‚¬μš©

Item returnItem = em.merge(item);

μœ„ μ½”λ“œ μ‹€ν–‰ ν›„ Item은 μ—¬μ „νžˆ μ€€μ˜μ† 엔티티이고 λ°˜ν™˜λ˜λŠ” returnItem은 μ˜μ† 엔티티이닀.

 

1. λ³€κ²½ 감지 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ μ›ν•˜λŠ” μ†μ„±λ§Œ λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.

2. 병합을 μ‚¬μš©ν•˜λ©΄ λͺ¨λ“  속성을 λ³€κ²½ν•œλ‹€. μ—†λŠ” 속성은 null둜 λ³€κ²½ν•˜κΈ° λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

 

λ”°λΌμ„œ mergeλ₯Ό μ•„μ˜ˆ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ³€κ²½ 감지λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 ꢌμž₯λœλ‹€.

 

πŸ“„ μ—”ν‹°ν‹°λ₯Ό λ³€κ²½ν•˜λŠ” ꢌμž₯λ˜λŠ” 방법

  • μ»¨νŠΈλ‘€λŸ¬μ—μ„œ μ€€μ˜μ† μ—”ν‹°ν‹°λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • νŠΈλžœμž­μ…˜μ΄ μžˆλŠ” μ„œλΉ„μŠ€ 계측에 μ‹λ³„μž(id)와 λ³€κ²½ν•  데이터λ₯Ό νŒŒλΌλ―Έν„°λ‚˜ DTO둜 λͺ…ν™•ν•˜κ²Œ μ „λ‹¬ν•œλ‹€.
  • νŠΈλžœμž­μ…˜μ΄ μžˆλŠ” μ„œλΉ„μŠ€ κ³„μΈ΅μ—μ„œ μ˜μ† μƒνƒœμ˜ μ—”ν‹°ν‹°λ₯Ό μ‘°νšŒν•˜κ³  μ—”ν‹°ν‹°μ˜ 데이터λ₯Ό 직접 λ³€κ²½ν•œλ‹€.
  • νŠΈλžœμž­μ…˜ 컀밋 μ‹œμ μ— λ³€κ²½ 감지가 μ‹€ν–‰λœλ‹€.
 

[JPA] μ€€μ˜μ† μ—”ν‹°ν‹°λž€? λ³€κ²½ 감지와 병합(merge)

μ€€μ˜μ† μƒνƒœλž€? μ˜μ† μƒνƒœμ˜ μ—”ν‹°ν‹°κ°€ μ˜μ†μ„± μ»¨ν…μŠ€νŠΈμ—μ„œ 뢄리(detached)된 것 μ˜μ†μ„± μ»¨ν…μŠ€νŠΈκ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ‚¬μš© λͺ»ν•¨ μ€€μ˜μ† μƒνƒœλ‘œ λ§Œλ“œλŠ” 방법 em.detach(entity) νŠΉμ • μ—”ν‹°ν‹°λ§Œ μ€€μ˜μ† 상

ppomelo.tistory.com

 

    'Java/JPA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JPA] μ—”ν‹°ν‹° μ„€κ³„μ‹œ 주의점

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”