728x90
spring.jpa.open-in-view = true가 default다.
트랜잭션이 끝나도 api 단에서 lazy loading 때문에 프록시를 초기화하는 경우가있기에 db connection 을 계속 가지고 있다.
application에서 응답이 나갈떄까지 끝까지 살아 있다. 지연로딩이 가능했던 이유이다.
하지만 커넥션을 너무 오래 들고 있기 때문에 실시간 트래픽이 중요한 앱에서는 커넥션이 모자라 장애로 이어 질 수 있다.
영속성컨텍스트 view rendering이 끝나는 시점에 끝난다. 즉 view rending 도중에도 영속성 컨텍스트에서 도움을 받을 수 있다.
OSIV Off
db connection을 짧은 기간 동안 만 유지하는 것이다. 커넥션 리소스를 낭비하지 않게 될 수 있다.
모든 lazy loading 트랜잭션 안에서 처리해줘야한다. fetch join 등 을 사용해서 로딩을 강제로 시켜놔야한다.
쿼리전용 서비스 단을 만들어줘서 컨트롤러단에서는 그냥 받아오기만 하는 역할로 수정을 할 수도 있다.
728x90
'WEB > JPA' 카테고리의 다른 글
실전! Spring Data JPA 3(확장기능,Auditing ,Page) (0) | 2021.04.13 |
---|---|
실전! Spring Data JPA 1,2(공통 인터페이스 기능, 쿼리 메소드 기능) (0) | 2021.04.12 |
실전! 스프링부트와 JPA와 활용2 (컬렉션 조회 최적화) (0) | 2021.04.06 |
실전! 스프링 부트와 JPA 활용2 (API 개발기본 , 지연로딩과 조회 성능 최적화) (0) | 2021.04.03 |
김영한 (ORM 표준 JPA 프로그래밍 11) 객체지향 쿼리 언어 소개2 - 중급문법 (0) | 2021.03.20 |