사용자 도구

사이트 도구


java:jpa:lock

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:jpa:lock [2018/06/21 15:47]
kwon37xi
java:jpa:lock [2020/09/24 09:31] (현재)
kwon37xi
줄 1: 줄 1:
 ====== JPA Lock ====== ====== JPA Lock ======
-  * [[http://www.baeldung.com/jpa-optimistic-locking|Optimistic Locking in JPA | Baeldung]] 
  
 ===== Optimistic Lock 낙관적 잠금 ===== ===== Optimistic Lock 낙관적 잠금 =====
 +  * [[http://www.baeldung.com/jpa-optimistic-locking|Optimistic Locking in JPA | Baeldung]]
   * 기본적으로 ''OptimisticLockException'' 을 던져야 하지만, EJB와 Spring은 이 예외를 감싼 다른 예외를 던진다.   * 기본적으로 ''OptimisticLockException'' 을 던져야 하지만, EJB와 Spring은 이 예외를 감싼 다른 예외를 던진다.
     * EJB : ''EJBException''     * EJB : ''EJBException''
     * Spring : ''OptimisticLockingFailureException''     * Spring : ''OptimisticLockingFailureException''
 +  * 낙관적 잠금 대상 컬럼은 무조건 값이 증가 혹은 현재 시간으로 업데이트 된다.
  
 +===== Hibernate와 낙관적 잠금 =====
 +  * HQL Update 문에서 버전 필드를 강제 업데이트 하고 싶으면 ''VERSIONED'' 를 사용한다(JPA 표준 아님, ''UserVersionType''과 함께 사용 불가).<code sql>
 +UPDATE VERSIONED Customer c
 +   set c.name = :newName
 +   where c.name = :oldName
 +</code>
 +  * [[https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/usertype/UserVersionType.javaorg.hibernate.usertype.UserVersionType|UserVersionType]] 으로 사용자 정의 Version 타입 만들기 가능.
  
 +===== 참조 ===== 
 +  * [[https://reiphiel.tistory.com/entry/understanding-jpa-lock|JPA 잠금(Lock) 이해하기 :: 레이피엘의 블로그]]
  
java/jpa/lock.1529563644.txt.gz · 마지막으로 수정됨: 2018/06/21 15:47 저자 kwon37xi