-
JPA OSIV (open-in-view)JPA 2023. 12. 14. 22:20
spring.jpa.open-in-view : true
service 계층에서 transaction 시작하는 시점에서 db connection 가져오는데
-> api 가 끝날 때 까지 반환을 안 함
-> 사유 = 프록시 객체를 가져올 때를 대비해서 db connection 이 살아있어야 함. (member.getName() 처럼)
즉, 영속성 컨텍스트가 끝까지 살아있어야 함
=> 실시간 트래픽이 중요한 어플리케이션인 경우에 커넥션이 모자랄 수 있다 = 장애
spring.jpa.open-in-view : false
transaction 이 끝날 때 까지만 DB Connection 유지함
-> 모든 지연로딩은 트랜잭션 안에서 처리해야 함 !
이 복잡성을 관리하는 좋은 방법
: CQRS 기법 (command와 query 를 분리)