Spring OSIV와 성능 최적화

Yebali·2021년 4월 19일
0

약간의_Spring

목록 보기
15/30
post-thumbnail

OSIV란?

Open Session In View의 줄임말. 하이버네이트에서 사용하는 단어이다.
JPA에서는 Open EntityManager In View가 정식 명칭이지만 관례상 OSIV라고 한다.

OSIV는 영속성 컨텍스트의 생존 범위를 지정하는 것이다.

OSIV ON!

'spring.jpa.open-in-view : true(기본값)'일 때는,
커넥션 시작부터 API응답이 끝날 때 까지 영속성 컨텍스트가 유지된다.

위의 설정에서는 Controller에서도 지연 로딩을 사용 할 수 있다.
영속성 컨텍스트는 기본적으로 DB 커넥션을 유지하기 때문에 이것 자체가 큰 장점이지만,
DB커넥션을 오랫동안 사용하기 때문에 실시간 트래픽이 몰리면 커넥션이 말라버린다(부족해진다).

OSIV OFF!


'spring.jpa.open-in-view : false'일 때는, 트랜잭션이 종료될 때 영속성 컨텍스트를 닫고 DB커넥션도 반환한다. 따라서 커넥션 리소스를 낭비하지 않는다.
단, OSIV를 끄면 모든 지연로딩을 트랜잭션 안에서 처리해야 한다.

영한님은 고객용 API 서비스에는 OSIV를 끄고, ADMIN과 같은 곳에서는 OSIV를 켜라고 하신다.

출처: https://www.inflearn.com/users/@yh

profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글