사용자 도구

사이트 도구


java:jpa:lock

JPA Lock

Optimistic Lock 낙관적 잠금

  • 기본적으로 OptimisticLockException 을 던져야 하지만, EJB와 Spring은 이 예외를 감싼 다른 예외를 던진다.
    • EJB : EJBException
    • Spring : OptimisticLockingFailureException
  • 낙관적 잠금 대상 컬럼은 무조건 값이 증가 혹은 현재 시간으로 업데이트 된다.

Hibernate와 낙관적 잠금

  • HQL Update 문에서 버전 필드를 강제 업데이트 하고 싶으면 VERSIONED 를 사용한다(JPA 표준 아님, UserVersionType과 함께 사용 불가).
    UPDATE VERSIONED Customer c
       SET c.name = :newName
       WHERE c.name = :oldName
  • UserVersionType 으로 사용자 정의 Version 타입 만들기 가능.

참조

java/jpa/lock.txt · 마지막으로 수정됨: 2022/05/10 10:15 저자 kwon37xi