νλ¬μ
μμμ± μ»¨ν μ€νΈ(Persistence Context)μ λ°μ΄ν°λ² μ΄μ€λ₯Ό λκΈ°ννλ κ²μ μλ―Έν©λλ€.
λ³΄ν΅ λ°μ΄ν°λ² μ΄μ€ νΈλμμ μ΄ μ»€λ°λλ μκ°μ νλ¬μκ° λ°μν©λλ€.
νλ¬μκ° λ°μνλ©΄ "μ°κΈ° μ§μ° μ μ₯μ"μ λͺ¨μλλ INSERT, UPDATE, DELETE SQLλ±μ΄ λ°μ΄ν°λ² μ΄μ€μ μ λ¬λ©λλ€.
μ¦ νλ¬μκ° λ°μνλ©΄ μμμ± μ»¨ν μ€νΈμ λ³κ²½μ¬νμ DBμ λ°μν¨μΌλ‘μ¨ DBμ μμμ± μ»¨ν μ€νΈλ₯Ό λκΈ°νμν€λ κ²μ λλ€.
νλ¬μκ° λ°μνλ©΄
νλ¬μκ° λ°μνλ©΄ λ€μκ³Ό κ°μ μΌμ΄ μ°¨λ‘λλ‘ μνλ©λλ€
- λ³κ²½ κ°μ§(Dirty Checking)
- μμ λ μν°ν°κ° μλ€λ©΄ μ°κΈ° μ§μ° SQL μ μ₯μμ λ±λ‘
- μ°κΈ° μ§μ° SQL μ μ₯μμ 쿼리λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ‘(λ±λ‘, μμ , μμ )
νλ¬μνλ λ°©λ²
- em.flush() - μ§μ νΈμΆ
- νΈλμμ μ»€λ° - μλ νΈμΆ
- JPQL 쿼리 μ€ν - μλ νΈμΆ
JPQL 쿼리 μ€ν μ νλ¬μκ° νΈμΆλλ μ΄μ
JPQLμ μ€ννλ©΄ μμμ± μ»¨ν μ€νΈκ° μλ DBμ μ§μ 쿼리λ₯Ό μ μ‘νκ² λ©λλ€.
λ°λΌμ JPQL μ€ν μμ μ DBμ λ΄μ©μ΄, νμ¬κΉμ§ λ³κ²½λ μμμ± μ»¨ν μ€νΈμ μνμ μΌμΉνμ§ μλλ€λ©΄ λ¬Έμ κ° μκΈΈ μ μμ΅λλ€.
λ°λΌμ JPAλ μ΄λ₯Ό λ°©μ§νκΈ° μν΄ JPQLμ μ€ννλ©΄, μ§κΈκΉμ§μ λ³κ²½ λ΄μμ΄ DBμ λ°μλ μ μλλ‘ νλ¬μκ° νΈμΆλλ κ²μ λλ€.
μ΄λ FlushModeλ₯Ό λ³κ²½ν¨μΌλ‘μ¨ νλ¬μλ₯Ό νΈμΆνμ§ μλλ‘ ν μ μμ΅λλ€.
νλ¬μ λͺ¨λ μ΅μ
em.setFlushMode(FlushModeType.COMMIT)
- FlushModeType.AUTO : 컀λ°μ΄λ 쿼리λ₯Ό μ€νν λ νλ¬μ(κΈ°λ³Έκ°)
- FlushModeType.COMMIT : 컀λ°ν λλ§ νλ¬μ.(JPQLμ μ€νν΄λ νλ¬μκ° μ΄λ£¨μ΄μ§μ§ μλλ€)
μ€μ
νλ¬μλ μμμ± μ»¨ν μ€νΈλ₯Ό λΉμ°μ§ μμ΅λλ€.
λ¨μ§ μμμ± μ»¨ν μ€νΈμ λ³κ²½λ΄μ©μ λ°μ΄ν°λ² μ΄μ€μ λκΈ°ν μν€λ κ²μ λλ€.
Reference
'ποΈ Spring > JPA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JPA] νλμ μ»¬λΌ λ§€ν - @Enumerated (0) | 2021.12.14 |
---|---|
[JPA] νλμ μ»¬λΌ λ§€ν - @Column (0) | 2021.12.14 |
[JPA] μν°ν° 맀ν - @Entity, @Table (0) | 2021.12.13 |
[JPA] μν°ν°μ μλͺ μ£ΌκΈ° - λΉμμ, μμ, μ€μμ, μμ (0) | 2021.12.12 |
[JPA] μμμ± μ»¨ν μ€νΈλ? (0) | 2021.12.12 |