패스잇
백엔드 개발 · 중급

@Transactional의 readOnly 속성은 어떤 역할을 하며, 성능에 어떤 영향을 주나요?

힌트 · 더티 체킹 스킵, 플러시 모드, DB 최적화를 생각해보세요.

트랜잭션 격리 수준Dirty Read 방지Flush Mode최적화리소스 절약

모범답안

@Transactional의 readOnly 속성은 트랜잭션을 읽기 전용으로 설정하는 역할을 합니다. 이 속성을 true로 설정하면 JPA는 몇 가지 최적화를 수행합니다.

가장 중요한 것은 더티 체킹을 스킵한다는 점입니다. 데이터베이스에서 읽어온 엔티티의 변경 사항을 감지하고 자동으로 업데이트하는 과정을 생략하여 연산 비용을 줄입니다. 또한, Flush Mode를 MANUAL로 설정하여 불필요한 flush를 방지합니다.

readOnly 속성을 사용하면 데이터베이스 커넥션에 대한 자원을 효율적으로 사용할 수 있고, 트랜잭션 격리 수준을 높여 Dirty Read를 방지하는 데에도 도움을 줄 수 있습니다. 결과적으로 읽기 전용 트랜잭션의 성능을 향상시키는 효과가 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기