시작이 반

[JPA]OSIV 본문

Programming/JPA

[JPA]OSIV

G_Gi 2021. 6. 23. 19:39
SMALL

OSIV ON

최초 데이터베이스 커넥션 시작부터 API응답이 끝날 때 까지 영송성 컨텍스트와 데이터베이스 커넥션 유지

만약 Controller에서 외부 API를 호출하면 API대기 시간만큼 커넥션 리소스 반환 못함 - 자원낭비

 

 

OSIV OFF

트랜잭션을 종료할 떄 영송성 컨텍스트를 닫고, 데이터베이스 커넥션도 반환 - 리소스 낭비x

지연로딩을 트랜잭션 안에서 처리해야함

 

 

OSIV를 끄면 컨트롤러에 있던 로직들을 서비스로 옮겨서 Transactional(readOnly = true)를 사용하여 로직을 사용한다.

 

ex)

OrderService OrderService: 핵심 비즈니스 로직

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

 

 

고객 서비스의 실시간 API는 OSIV를 끄고, ADMIN 처럼 커넥션을 많이 사용하지 않는 곳에서는 OSIV를 키는 것이 좋다.

 

 

참고:

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

 

LIST

'Programming > JPA' 카테고리의 다른 글

[JPA]영속성  (0) 2021.11.25
[JPA] One To Many에서 join fetch ( 페이징 )  (1) 2021.06.07
[JPA] 1 + n 조회, x To One에서 join fetch  (0) 2021.05.29
[JPA] xToMany - ManyToX  (0) 2021.05.29
[JPA] 변경감지와 병합(merge)  (1) 2021.05.27