JPA - π StaleObjectStateException μ΄ λ°μνλ€λ©΄
StaleObjectStateException μ Hibernate μμ λμμ κ°μ μν°ν°λ₯Ό μμ νλ €κ³ ν λ λ°μνλ λμμ± μΆ©λ λ¬Έμ μ λλ€.
μ¦, A νΈλμμ μμ λ°μ΄ν°λ₯Ό μμ νλ λμ, B νΈλμμ μ΄ κ°μ λ°μ΄ν°λ₯Ό μμ νλ €κ³ νλ©΄ μΆ©λμ΄ λ°μν μ μμ΅λλ€.
μ£Όμ λ°μ μν©
β
1. Optimistic Locking
@Version νλλ₯Ό κ°μ§ μν°ν°λ₯Ό λ€λ₯Έ νΈλμμ μμ λμμ μμ νλ €κ³ ν λ λ°μ.
βοΈ μ: μ¬μ©μκ° κ°μ λ°μ΄ν°λ₯Ό λμμ μμ νλ κ²½μ°.
β
2. Detached Entity λ¬Έμ
findById() λλ findByUserId() λ±μΌλ‘ μ‘°νν μν°ν°κ° Detached μνμμ μ λ°μ΄νΈλ κ²½μ° λ°μ.
JPAκ° κ΄λ¦¬νλ Persistence Context λ°μμ μμ λ μν°ν°λ₯Ό save() νΈμΆ μ merge() κ³Όμ μμ μΆ©λ λ°μ.
β
3. Long-running Transactions (κΈ΄ νΈλμμ
)
κ°μ λ°μ΄ν°λ₯Ό μ€λ«λμ μμ νλ νΈλμμ μ΄ μμ λ, λ€λ₯Έ νΈλμμ μμ λ³κ²½μ΄ λ°μνλ©΄ μμΈ λ°μ.
β
4. λ€μ€ μμ² μ²λ¦¬ (Concurrency Issues)
λ κ° μ΄μμ νΈλμμ μ΄ κ±°μ λμμ κ°μ λ°μ΄ν°λ₯Ό μμ νλ©΄ StaleObjectStateExceptionμ΄ λ°μ κ°λ₯.
π₯² μμ μμ μ€μ λ΄κ° κ²ͺμλ κ²μ [2. Detached Entity] λ¬Έμ ..
ING
Last updated