π λλ©μΈ λͺ¨λΈ ν¨ν΄
- μν°ν° μμ λΉμ¦λμ€ λ‘μ§μ΄ ν¬ν¨λ ν¨ν΄
- κ°μ²΄μ§ν₯μ νμ©νλ κΈ°λ²
π νΈλμμ μ€ν¬λ¦½νΈ ν¨ν΄
μλΉμ€ κ³μΈ΅μμ λͺ¨λ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ ν¨ν΄
π μ€μμ μν°ν°
- μμμ± μ»¨ν μ€νΈκ° λ μ΄μ κ΄λ¦¬νμ§ μλ μν°ν°
- μμλ‘ λ§λ μν°ν°λ μλ³μλ₯Ό κ°κ³ μλ€λ©΄ μ€μμ μν°ν°λ‘ λ³Ό μ μλ€.
μ€μμ μν°ν°λ₯Ό μμ νλ λ°©λ²
1. μμ μν°ν°λ₯Ό κ°μ Έμ λ³κ²½ κ°μ§ dirty check
κΈ°λ₯ μ¬μ©
2. λ³ν© em.merge(item)
μ¬μ©
Item returnItem = em.merge(item);
μ μ½λ μ€ν ν Item
μ μ¬μ ν μ€μμ μν°ν°μ΄κ³ λ°νλλ returnItem
μ μμ μν°ν°μ΄λ€.
1. λ³κ²½ κ°μ§ κΈ°λ₯μ μ¬μ©νλ©΄ μνλ μμ±λ§ λ³κ²½ κ°λ₯νλ€.
2. λ³ν©μ μ¬μ©νλ©΄ λͺ¨λ μμ±μ λ³κ²½νλ€. μλ μμ±μ nullλ‘ λ³κ²½νκΈ° λλ¬Έμ μ£Όμν΄μΌ νλ€.
λ°λΌμ mergeλ₯Ό μμ μ¬μ©νμ§ μκ³ λ³κ²½ κ°μ§λ₯Ό μ¬μ©νλ λ°©λ²μ΄ κΆμ₯λλ€.
π μν°ν°λ₯Ό λ³κ²½νλ κΆμ₯λλ λ°©λ²
- 컨νΈλ‘€λ¬μμ μ€μμ μν°ν°λ₯Ό μμ±νμ§ μλλ€.
- νΈλμμ μ΄ μλ μλΉμ€ κ³μΈ΅μ μλ³μ(id)μ λ³κ²½ν λ°μ΄ν°λ₯Ό νλΌλ―Έν°λ DTOλ‘ λͺ ννκ² μ λ¬νλ€.
- νΈλμμ μ΄ μλ μλΉμ€ κ³μΈ΅μμ μμ μνμ μν°ν°λ₯Ό μ‘°ννκ³ μν°ν°μ λ°μ΄ν°λ₯Ό μ§μ λ³κ²½νλ€.
- νΈλμμ μ»€λ° μμ μ λ³κ²½ κ°μ§κ° μ€νλλ€.