Pessimistic Lock in JPA




• 비관적 락(pessimistic lock)은 트랜잭션 충돌을 예상하여 미리 데이터에 대한 락을 선점하는 방식으로, JPA에서는 LockModeType을 사용하여 설정할 수 있다.
• Spring Data JPA에서는 @Lock 애너테이션을 사용하여 잠금 모드를 설정하며, 테스트 코드를 작성하여 비관적 락 기능 동작을 확인할 수 있다.
• 제목이 Hello World인 포스트 엔티티를 찾아 데이터 락을 점유하고, 내용을 변경한 후 7초 대기하여 오염 감지를 통해 업데이트하는 트랜잭션1의 작업
• 트랜잭션2에서 제목이 Hello World인 포스트 엔티티를 찾아 내용을 변경하려 하지만, 다른 트랜잭션에 락이 걸린 데이터로 인해 타임아웃 예외가 발생하며 예외 처리 과정을 거치는 작업

북마크
공유하기
신고하기