DevBoi

[JPA] Open session in view(OSIV)란 본문

Develop/[JPA]

[JPA] Open session in view(OSIV)란

HiSmith 2022. 3. 21. 00:32
반응형

OSIV가 True일 경우, 영속성 컨텍스트가 트랜잭션 범위를 넘어선 레이어까지 살아있다.

API라면, 클라이언트에게 응답될 때까지, View라면, View가 렌더링 될때까지 영속성 컨텍스트가 살아있다.

 

 

 

 

쉽게 service에서 받은 lazy 로딩 전략의 엔티티를 controller에서 사용한다고 하자

controller에서 lazy 엔티티를 get하면, oslv가 true인 경우, 로딩을 하고, 프록시 객체가 실제 엔티티를 호출

쿼리가 나가고 값을 사용할수 있다.

 

하지만 lazy로딩일때, oslv가 false라고 가정하면, 영속성 컨텍스트가 닫혀버리면서, 지연로딩을 할수 없게된다.

기본 값이 true이긴한데,

 

단점이 존재한다. 영속성컨텍스트를 유지하는건 DB connection 도 계속 가지고있는 것이다.

실시간 트래픽이 중요한 어플리케이션에서는 DB connection이 모자를수 있다. 성능이 중요하다면, 해당 OSIV는 false로 두어야한다.

반응형

'Develop > [JPA]' 카테고리의 다른 글

[JPA] 엔티티 설계시 주의사항  (0) 2022.03.21
[JPA] EntityGraph 란  (0) 2022.03.21
[JPA] JPA 트랜잭션 사용  (0) 2022.03.20
[JPA]QueryDSL 사용이유, 정의  (0) 2022.03.20
[JPA] ID를 Long으로 하는 이유  (0) 2022.03.20