백엔드 개발 · 심화
OSIV(Open Session In View)란 무엇이며, 장단점은 무엇인가요?
힌트 · 영속성 컨텍스트 범위와 지연 로딩, 커넥션 점유 문제를 생각해보세요.
영속성 컨텍스트트랜잭션지연 로딩OSIV성능
모범답안
OSIV는 Open Session In View의 약자로, 영속성 컨텍스트를 뷰 템플릿까지 열어두는 방식입니다. 보통 트랜잭션은 서비스 계층에서 끝나지만, OSIV를 사용하면 뷰에서도 지연 로딩을 사용할 수 있다는 장점이 있습니다.
하지만 OSIV는 커넥션 점유 시간을 늘려 성능 문제를 야기할 수 있고, 뷰에서 데이터를 수정할 가능성이 생겨 예측 못한 side effect가 발생할 수 있습니다. 따라서 읽기 전용으로 사용하거나, 트랜잭션 범위를 신중하게 설정하는 것이 중요합니다. 최근에는 API 기반 개발이 많아지면서 OSIV보다는 DTO를 적극적으로 활용하는 추세입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 JPA / ORM 면접 질문
- @Transactional의 readOnly 속성은 어떤 역할을 하며, 성능에 어떤 영향을 주나요?
- JPA에서 상속 관계 매핑 전략(SINGLE_TABLE, JOINED, TABLE_PER_CLASS)의 차이점과 선택 기준은?
- JPA 2차 캐시(Second Level Cache)란 무엇이며, 1차 캐시와의 차이점은 무엇인가요?
- JPA 성능 최적화를 위한 전략들에 대해 종합적으로 설명해주세요.
- JPA에서 @OneToOne 관계의 지연 로딩이 동작하지 않는 경우와 해결 방법은?
- 프로젝트에서 JPA를 사용하면서 겪었던 성능 이슈와 해결 경험을 공유해주세요.