작성
·
384
답변 2
1
안녕하세요. 인철님
REPEATABLE_READ라는 격리 수준은 한번 읽은 내용을 동일하게 계속 읽을 수 있다는 뜻입니다. 별도의 락을 사용하는 것은 아니고 영속성 컨텍스트의 개념 덕분에 이것이 자동으로 적용됩니다.
Q: 그리고 혹시 추가적으로 어떻게 REPEATABLE READ를 보장해주는 지 알 수 있는지에 대한 자료는 hibernate 공식문서에 가면 있을까요?
A: https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch13.html
감사합니다.
REPEATABLE READ의 핵심은 락이라기 보다는 하나의 트랜잭션 안에서 읽은 데이터를 계속 같은 데이터 값으로 읽을 수 있다는 점입니다. 이것을 데이터베이스에 따라서 어떻게 구현하는가가 달라집니다. 생각하신 것 처럼 락으로 주로 구현하겠지요?
그런데 JPA는 1차 캐시가 있기 때문에 락을 걸지 않고도 1차 캐시 덕분에 REPEATABLE READ의 효과를 볼 수 있습니다.
감사합니다.