Home
>
Spring
>
π[Spring] μμμ± μ»¨ν
μ€νΈ(Persistence Context)
Spring
Framework
π[Spring] μμμ± μ»¨ν
μ€νΈ(Persistence Context)
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)λ μν°ν°(Entity) κ°μ²΄μ μνλ₯Ό κ΄λ¦¬νλ νκ²½μ μλ―Ένλ©°, λ°μ΄ν°λ² μ΄μ€μμ μΈμ
λλ μμμ± κ΄λ¦¬ λ¨μλΌκ³ λ λ³Ό μ μμ΅λλ€.
- μ΄ κ°λ
μ JPA(Java Persistence API) νμ€μμ μ μλλ©°, Spring Data JPA κ°μ ꡬν체λ€μ΄ μ΄λ₯Ό λ°λ¦
λλ€.
1οΈβ£ μμμ± μ»¨ν
μ€νΈ(Persistence Context)μ μ£Όμ κ°λ
.
1οΈβ£ μν°ν°μ μλͺ
μ£ΌκΈ° κ΄λ¦¬.
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)λ μν°ν° κ°μ²΄μ μνλ₯Ό μλͺ
μ£ΌκΈ°μ λ°λΌ κ΄λ¦¬ν©λλ€.
- μν°ν°λ λΉμμ(new/transient), μμ(persistent), μ€μμ(detached), μμ (removed) μν μ€ νλμΌ μ μμ΅λλ€.
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)μ μν΄ κ΄λ¦¬λλ μν°ν°λ μμ μνκ° λ©λλ€.
- μμ μνμΈ μν°ν°λ λ°μ΄ν°λ² μ΄μ€μμ λκΈ°νκ° μλμΌλ‘ μ΄λ£¨μ΄μ§λ©°, λ³κ²½ μ¬νμ΄ μλμΌλ‘ μΆμ λ©λλ€.
2οΈβ£ 1μ°¨ μΊμ μν .
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)λ μν°ν°λ₯Ό λ©λͺ¨λ¦¬μ μΊμνμ¬ 1ν μΊμ μν μ μνν©λλ€.
- μ¦, λμΌν μν°ν°μ μ¬λ¬ λ² μ κ·Όν λ, λ°μ΄ν°λ² μ΄μ€λ₯Ό μ‘°ννμ§ μκ³ λ©λͺ¨λ¦¬μ μλ μν°ν°λ₯Ό μ¬μ¬μ©ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ μ±λ₯μ μ΅μ νν μ μμ΅λλ€.
3οΈβ£ λ³κ²½ κ°μ§(Dirty Checking)
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)λ μμ μνμ μν°ν° λ³κ²½ μ¬νμ μΆμ ν©λλ€.
- νΈλμμ
μ΄ μ’
λ£λ λ, λ³κ²½λ λΆλΆμ μλμΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λ°μν©λλ€.
- μ΄λ₯Ό λ³κ²½ κ°μ§λΌκ³ ν©λλ€.
4οΈβ£ μ§μ° λ‘λ©(Lazy Loading)
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)λ νμν λκΉμ§ λ°μ΄ν°λ₯Ό κ°μ Έμ€μ§ μκ³ , μ€μ λ‘ μ¬μ©ν λ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό λΆλ¬μ€λ μ§μ° λ‘λ©(Lazy Loading)μ μ§μν©λλ€.
- μ΄λ μ±λ₯ μ΅μ νμ μ 리ν©λλ€.
2οΈβ£ μμμ± μ»¨ν
μ€νΈ(Persistence Context)μ μ΄μ .
1οΈβ£ μλ λκΈ°ν.
- μμμ± μ»¨ν
μ€νΈ(Persistence Context)μ μλ μν°ν°λ μλμΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λκΈ°νλλ―λ‘, λ°μ΄ν°λ² μ΄μ€μ μ§μ μ μ₯νλ μ½λλ₯Ό μμ±νμ§ μμλ λ©λλ€.
2οΈβ£ μΊμ κΈ°λ₯.
- 1μ°¨ μΊμλ‘ μΈν΄ λμΌν μν°ν°μ λν μ€λ³΅ μ‘°νλ₯Ό λ°©μ§νμ¬ μ±λ₯μ΄ κ°μ λ©λλ€.
3οΈβ£ νΈλμμ
κ΄λ¦¬.
- νΈλμμ
λ¨μλ‘ μν°ν° μνκ° κ΄λ¦¬λλ―λ‘, μμ νκ² λ°μ΄ν°λ² μ΄μ€μμ μΌκ΄μ±μ μ μ§ν μ μμ΅λλ€.
3οΈβ£ μμ.
// μλ₯Ό λ€μ΄, userRepository.findById(id)λ₯Ό νΈμΆνλ©΄
// userRepositoryλ μμμ± μ»¨ν
μ€νΈμ μ κ·Όνμ¬ μν°ν°λ₯Ό λ°νν©λλ€.
User user = userRepository.findById(id).orElseThrow();
// userμ μ΄λ¦μ μμ νλ©΄, μ΄ λ³κ²½ μ¬νμ μμμ± μ»¨ν
μ€νΈμ λ°μλκ³ ,
// νΈλμμ
μ΄ λλ λ μλμΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λ°μλ©λλ€.
user.setName("New Name");
- μμ κ°μ΄, μμμ± μ»¨ν
μ€νΈλ Spring Data JPAμ κ°μ JPA ꡬνν
κ° μν°ν°λ₯Ό κ΄λ¦¬νκ³ , λ³κ²½ μ¬νμ λ°μ΄ν°λ² μ΄μ€μ λ°μνλ©°, νΈλμμ
λ΄μμ ν¨μ¨μ μΌλ‘ μν°ν°λ₯Ό μΊμ±νκ³ λκΈ°ννλλ‘ λλ μ€μν κ°λ
μ
λλ€.