μ λͺ©μ λ΄κ° μμ¦ κ΅¬κΈλ§ν λ μμ£Ό μ μ©νλ ν€μλμΈλ° γ γ κ° λλ° λΌλ ν€μλμ΄λ€
κ·Όλ° μ§μ§ κ±°μ§λ§ μνκ³ μ΄κ±Έλ‘ κ²μνλ©΄ λμ μμ€κ³Ό λΉμ·νλΆλ€μ΄ ν λ§Ίνμ μ½κ² μ€λͺ ν΄μ£Όμ ν¬μ€ν λ€μ΄ μμ
λλ μλ‘ μκ²λ μ§μμ μ 리νλ ν¬μ€ν μ μ΄ ν€μλλ‘ μ¨λ³ΌκΉ ν¨
μ΄κ±Έ μ°Ύμλ³΄κ² λ κ³κΈ°λ μμμΌ κΈ°μ 맀λμ λ μνλ μ°λ¦¬μ‘° λμ₯λμ μ§νλλ₯Ό λ³΄κ³ κΈ°μ 맀λμ λμ΄ CRUD κΈ°λ₯μ λ€ κ΅¬ννμ ¨μΌλ©΄
μλΉμ€μμ @Transection μ΄λ Έν μ΄μ μ μ μΈνκ³ κ΅¬νν΄λ³΄μΈμ ~ λΌκ³ ννΈλ μμμ±μ λλ€! λΌκ³ μλ €μ£Όμ μ μ°Ύμ보κ²λμλ€.
μ¬μ€ μλ€ λ€ μ‘°μΈν΄μ£Όμ κ² μκ°μ΄ λμ§ μμλ λλ μμ€μ½λμμ λ°μλ‘ νΈλμμ μ΄λ Έν μ΄μ λ§ λΉΌλ³΄κ³ γ γ μ€ννλλ° μ μλλ κ²
μ°Ύμ보λ Transectional μ΄λ Έν μ΄μ μμ΄ UPdateλ₯Ό νλ €λ©΄ μμμ± μ»¨ν μ€νΈ λΌλ κ°λ μ λ¨Όμ νμ΅ν΄μΌ λλ€.
π§π»π» κ·Έλμ μμμ±μ΄ λλ°?
JPAμμμ μμμ±μ, Entityλ₯Ό μꡬμ μΌλ‘ μ μ₯ν΄μ£Όλ νκ²½μ μλ―Έ
: Entity Managerλ₯Ό μ΄μ©ν΄ Entityλ₯Ό μ μ₯νκ±°λ μ‘°νν λ EntityManagerλ μμμ± μ»¨ν μ€νΈμ Entityλ₯Ό 보κ΄νκ³ κ΄λ¦¬ν¨
: μμμ± μ»¨ν μ€νΈλ λμ 보μ΄μ§μλ λ Όλ¦¬μ κ°λ μ΄λ©°, Entity 맀λμ λ₯Ό νλ μμ±ν λ νλμ μμμ± μ»¨ν μ€νΈκ° λ§λ€μ΄μ§λ€.
* μ°Έκ³ : JPAλ νΈλμμ μ 컀λ°νλ μκ° μμμ± μ»¨ν μ€νΈμ μλ‘ μ μ₯λ Entityλ₯Ό λ°μ΄ν°λ² μ΄μ€μ λ°μ(Flush)νλ€.
π Entityμ μλͺ μ£ΌκΈ°λ₯Ό ν΅ν μμμ± μ»¨ν μ€νΈ κ°λ νμΈνκΈ°
λΉμμ(New/transient)
: κ°μ²΄λ₯Ό μμ±λ§ ν μνλ‘ μμμ± κ΄κ³μ μ ν κ΄κ³κ° μλ μν
μμ(Managed)
: κ°μ²΄κ° μμμ± μ»¨ν μ€νΈμ μ μ₯λ μν
EntityManager.persist(entity);
// Entityκ° μμμ± μ»¨ν
μ€νΈμ μν΄ κ΄λ¦¬λλ μν
transcation.commit();
// νΈλμμ
commit μμ μ μμμ± μ»¨ν
μ€νΈμ μλ μ 보λ€μ΄ DBμ μΏΌλ¦¬λ‘ μ μ‘λλ€
μ€μμ(Detached)
: μμμ± μ»¨ν μ€νΈκ° μ μ₯λμλ€κ° λΆλ¦¬λ μν = μμμ± μ»¨ν μ€νΈμμ μ§μ΄μν(JPAκ° κ΄λ¦¬νμ§ μλ κ°μ²΄)
entityManager.remove(entity);
μμ (Remove)
: μ€μ DB μμ λ₯Ό μμ²ν μν
π μμμ± μ»¨ν μ€νΈ μ¬μ©μ μ΄μ
1. 1μ°¨ μΊμ / μν°ν° λμΌμ± 보μ₯
- μμμ± μ»¨ν μ€νΈλ λ΄λΆμ μΊμλ₯Ό κ°κ³ μμ΄(Id, instanceμ 맡νν) μν°ν°λ€μ΄ μ μ₯λλ€.
- μν°ν° μ‘°νμ DBμ μ κ·Όνμ¬ memberλ₯Ό νμνλ κ²μ΄ μλλΌ, 1μ°¨ μΊμλ₯Ό νμ΄μ member1μ λ°λ‘ μ°Ύμ μ μκ³
- λ§μ½ μΊμμ μλ€λ©΄ DBμμ κ²μ ν ν΄λΉ κ°μ²΄λ₯Ό 1μ°¨ μΊμμ μ μ₯νκ³ λ°νν¨
- μ΄λ° 1μ°¨ μΊμλ₯Ό κ±°μΉ μ‘°νλ‘ μν°ν°μ λμΌμ±μ 보μ₯ν¨
2. νΈλμμ μ μ§μνλ μ°κΈ° μ§μ°
- μμμ± μ»¨νμ€νΈμμλ μμ±λ 쿼리λ₯Ό [μ°κΈ° μ§μ° SQL λ²νΌ]μ 쿼리λ₯Ό λ΄μλλ€κ°, μμμ± μ»¨ν μ€νΈμ λͺ λ Ήμ λ°λΌ DBμ μ μ‘λλ€.
- κ°μ²΄κ° μμμ± ν΄ν μ€νΈμ μμλλ©΄, 1μ°¨ μΊμλ‘ λ€μ΄κ°κ³ 쿼리λ SQLλ²νΌμ λ£μ΄μ§λ€.
- μ΄ν Transectionμ Commit νκ±°λ, 컨ν μ€νΈμ λ²νΌλ₯Ό λΉμ°λλ‘ λͺ λ Ήνλ©΄(flush) κ·Έλ λ²νΌμ μΏΌλ¦¬κ° μ€νλμ΄ DBμ μ μ‘λλ€.
'π½ Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Spring | @Beanμ΄ λλ° (0) | 2022.12.05 |
---|---|
Spring skill 01 | μΈμ¦(Authentication)κ³Ό μΈκ°(Authorization) (0) | 2022.12.04 |
Spring | Annotationμ΄ λλ° (0) | 2022.11.30 |
Spring Introduction 03 | Rest κ·Έλ¦¬κ³ Put/Patch (0) | 2022.11.30 |
Spring Introduction 02 | μ€νλ§ ν΄λ ꡬ쑰 (1) | 2022.11.29 |