• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

21.01.30 22:39 작성 조회수 141

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

레알이님의 프로필

레알이

질문자

2021.02.01

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