μ°μ£Όμ λκ΄μ μΈ λ½, λΉκ΄μ μΈ λ½μ μ 리ν λ΄μ©μ λλ€.
μΏ ν° μ€λ³΅ λ°κΈ? μ¬κ³ κΌ¬μ? π
μ€λ¬΄μμ μμ£Ό λ§μ£ΌμΉλ λμμ± λ¬Έμ ,Lockμ μ λλ‘ μλ©΄ ν΄κ²°ν μ μμ΅λλ€!
μ: λμμ μΏ ν°μ λ°μΌλ €λ 20λͺ μ μ μ κ° μμ λ, μ€μ μ§κΈ μλμ 5λͺ λ§ κ°λ₯ν΄μΌ ν¨!
"λ¬Έμ μμ κ±°λΌ μκ°νκ³ λ¨Όμ μ§ν"
@VersionμΌλ‘ μ¬μ© κ°λ₯@Version
private Long version;
OptimisticLockException λ°μ"μΈμ λ μΆ©λμ΄ λ μ μμ΄! 미리 μ κ°λμ"
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("SELECT p FROM Product p WHERE p.id = :id")
Optional<Product> findByIdForUpdate(@Param("id") Long id);
SELECT ... FOR UPDATE μ€ν| μν© | μ ν©ν λ½ λ°©μ | μ΄μ |
|---|---|---|
| μΏ ν° μ μ°©μ λ°κΈ | λκ΄μ λ½ | μ€ν¨ν΄λ μ¬μλ κ°λ₯νκ³ μλκ° μ€μ |
| μ¬κ³ μ°¨κ° / κ³μ’ μ΄μ²΄ | λΉκ΄μ λ½ | λ¨ 1건μ μ€ν¨λ νμ©λμ§ μμ |
λ½μ DB μ ν©μ±κ³Ό νΈλμμ μμ μ±μ μν λꡬ
μ΄λ€ λ½μ μΈμ§λ μν©μ λ°λΌ λ€λ₯΄λ©°,