Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 16236
- 백준 17779
- 백준 파이썬
- 프로래머스
- 백준 16719
- re.split
- 프로그래머스
- 백준
- MySQL
- spring cloud
- 백준 16235
- 파이썬
- 백준 19238
- sql 기술면접
- MSA
- Spring Boot
- spring oauth
- JPA
- Coroutine
- 웹어플리케이션 서버
- 백준 17626
- Spring
- spring security
- Kotlin
- springboot
- JVM
- 백준 15685
- java
- with recursive
- java 기술면접
Archives
- Today
- Total
시작이 반
[JPA]OSIV 본문
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 |