JPA - OSIV

태히·2022년 5월 13일
0

SpringBoot/JPA

목록 보기
1/3

spring.jpa.open-in-view: true (default)
-> 장점 : API호출이 끝나는 시점까지 커넥션을 들고있어서(영속성 컨텍스트가 살아있어서) 컨트롤러 또는 view단에서도 LAZY로딩이 가능하다.
-> 단점 : 커넥션을 계속 들고있게되면 로직이 오래걸리는경우 커넥션일 말라버릴 수 있음.

spring.jpa.open-in-view: false
-> 장점 : 트랜잭션을 종료할 때 영속성 컨텍스트를 닫고, 커넥션도 반환한다. 그러므로 커넥션 리소스를 낭비하지 않는다.
-> 단점 : OSIV를 끄면 모든 지연로딩을 트랜잭션(Service) 안에서 처리해야한다.

성능을 중요하게 생각한다면 OSIV를 끄고 비즈니스 로직(Command)과 view용 쿼리를 분리하는 것이다.

OrderService
OrderService: 핵심 비즈니스 로직
OrderQueryService: 화면이나 API에 맞춘 서비스 (주로 읽기 전용 트랜잭션 사용)

쉽게 생각한다면,
고객서비스의 실시간 API는 OSIV를 끄고,
ADMIN처럼 커넥션을 많이 사용하지 않는다면 OSIV를 켜는것이 좋다.

profile
하고싶은게 많은 개발자가 되고싶은

0개의 댓글