인프런 커뮤니티 질문&답변

레알이님의 프로필 이미지
레알이

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문, 주문상품 엔티티 개발

@Transactional(readOnly = true) 에 대한 질문이 있습니다!

작성

·

203

0

영한님 안녕하세요!

Spring Transactional 어노테이션을 사용하면서 궁금한 점이 생겼는데요. 

readOnly = true를 활성화 한 경우 제가 알기로는 JPA 하이버네이트에서는 flush mode를 manual로 변경해 dirty checking 을 하지 않도록 할 수 있다고 알고 있는데요.

혹시나  read only가 true인 경우 isolation level이 변경되거나 하는 일도 가능한 걸까요?

답변 3

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 레알이님

JPA의 영속성 컨텍스트를 사용하면 영속성 컨텍스트에서 다시 읽기를 해도 REPETABLE READ와 같은 효과를 얻을 수 있습니다. 다시 읽어도 1차 캐시에서 읽게 되니까요. 그런데 이게 readOnly이든 아니든 모두 적용되기 때문에 isolation level은 무관합니다.

감사합니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 레알이님^^

isolation level은 @Transactional에 별도의 설정이 있습니다. 따라서 변경되지 않습니다.

감사합니다.

0

레알이님의 프로필 이미지
레알이
질문자

답변 주셔서 감사합니다!
JPA를 사용하면 1차 캐시를 통해서 REPETABLE READ 효과를 얻을 수 있다고 하셨던 것 같은데요.
그러면 readOnly를 사용할 경우 아래 같이 트랜잭션 isolation level을 READ_COMMITTED로 변경하는 등의 최적화도 가능한 걸까요?
@Transactional(readOnly = true, isolation = Isolation.READ_COMMITTED)

레알이님의 프로필 이미지
레알이

작성한 질문수

질문하기