μν°ν°μ μλͺ μ£ΌκΈ°
μν°ν°λ λ€μκ³Ό κ°μ΄ 4λ¨κ³μ μλͺ μ£ΌκΈ°κ° μμ΅λλ€.
- λΉμμ (new/transient)
- μμ (managed)
- μ€μμ (detached)
- μμ (removed)
λΉμμ(new/transient)
λΉμμ μνλ κ°μ²΄λ₯Ό μλ‘ μμ±ν μνμ λλ€.
JPAμ μ ν κ΄κ³μμ΄ κ°μ²΄λ§ μμ±ν μνμ λλ€.
Member member = new Member(1L, "μ λν"); //memberλ λΉμμ μν
μμ μνκ° μλλ―λ‘ λΉμ°ν μμμ± μ»¨ν μ€νΈμ μν΄ κ΄λ¦¬λμ§ μμΌλ©°, 1μ°¨ μΊμ, λ³κ²½κ°μ§λ±μ κΈ°λ₯μ΄ μ μ©λμ§ μμ΅λλ€.
μμ(managed)
μμμ± μ»¨ν μ€νΈμ μν΄μ κ΄λ¦¬λμ΄μ§λ μνμ λλ€.
μμ±ν κ°μ²΄λ₯Ό em.persist()λ₯Ό ν΅ν΄ μμμ± μ»¨ν μ€νΈμ μ μ₯νκ±°λ,
νΉμ em.find()λ₯Ό ν΅ν΄ DBμμ μν°ν°λ₯Ό μ‘°ννλ©΄ μμμ± μ»¨ν μ€νΈμ μ μ₯λμ΄ κ΄λ¦¬λμ΄μ§λ―λ‘ μ΄λ μμ μνκ° λ©λλ€.
Member member = new Member(1L, "μ λν"); //memberλ λΉμμ μν
em.getTransaction().begin();
em.persist(member); //memberλ μμ μνκ° λ¨
μ€μμ (detached)
μμμ± μ»¨ν μ€νΈμ μ μ₯λμλ€κ° λΆλ¦¬λ μνλ‘ νμ¬λ μμ μνκ° μλ μνμ λλ€.
λ°λΌμ μμμ± μ»¨ν μ€νΈκ° μ 곡νλ κΈ°λ₯μ μ¬μ©νμ§ λͺ»ν©λλ€.
Member member = new Member(1L, "μ λν"); //memberλ λΉμμ μν
em.getTransaction().begin();
em.persist(member); //memberλ μμ μνκ° λ¨
em.detach(member); // νΉμ μν°ν°λ§ μ€μμ μνλ‘ μ ν
μ€μμκ³Ό λΉμμμ μ°¨μ΄μ
μ€μμκ³Ό λΉμμμ μ°¨μ΄λ λ°λ‘ μμμνκ° λμ΄λ³Έ κ²½νμ λλ€.
μμμνκ° λκΈ° μν΄μλ μλ³μκ° λ°λμ νμν©λλ€.
λ°λΌμ μ€μμ μνμ μν°ν°λ μλ³μκ° μ‘΄μ¬νλ€λ κ²μ΄ 보μ₯λμ§λ§
λΉμμ μνμ μν°ν°λ μλ³μκ° μ‘΄μ¬ν μλ, μ‘΄μ¬νμ§ μμμλ μμ΅λλ€.
μμ (removed)
1μ°¨μΊμμ λ°μ΄ν°λ² μ΄μ€μμ λͺ¨λ μμ λ μνμ λλ€.
em.remove(member)
κ·Έλ¦Ό
Reference
'ποΈ Spring > JPA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JPA] νλμ μ»¬λΌ λ§€ν - @Enumerated (0) | 2021.12.14 |
---|---|
[JPA] νλμ μ»¬λΌ λ§€ν - @Column (0) | 2021.12.14 |
[JPA] μν°ν° 맀ν - @Entity, @Table (0) | 2021.12.13 |
[JPA] νλ¬μμ νλ¬μ νμ (FlushModeType) (0) | 2021.12.12 |
[JPA] μμμ± μ»¨ν μ€νΈλ? (0) | 2021.12.12 |