5. API 개발 고급 - 실무 필수 최적화

2024. 1. 13. 20:24·Spring/JPA 2

OSIV

: Open Session In View

 

- 현재 JPA에서의 EntityManager와 같은 역할을

과거 Hibernate 에서 Session을 사용하였다.

 

DB 커넥션 계속 유지

 

 

@Transactional → setAutoCommit()

DB 커넥션을 획득하는 시점은 일반적으로 트랜잭션을 시작할 때 이다.

 

그럼 DB 커넥션의 반환 시점은 언제가 될까?

위 시점을 OSIV 설정을 통해 결정한다.

 

 


 

 

실전! 스프링부트와 JPA 활용2 - 김영한

 

 

if OSIV = True

     트랜잭션이 끝나도 'DB 커넥션'과 영속성 컨텍스트가 유지되게끔 한다.

     따라서 (API) Controller 나 View Template에서의 지연 로딩이 가능해진다.

 

     사용자에게 반응되기 전까지 오랫동안 DB 커넥션 리소스를 사용한다.

 

 

if OSIV = False

     트랜잭션이 끝날 때, 'DB 커넥션'이 반환되고 영속성 컨텍스트도 비워진다.

     따라서 커넥션 리소스 낭비가 없고, 실시간으로 트래픽이 많은 경우 DB 커넥션을 유연하게 사용할 수 있다.

 

     모든 지연 로딩을 트랜잭션(Service) 안에서 처리해야 한다.

     (Controller와 View Template에서 프록시 초기화를 할 수 없다.)

 

.getUsername() 일 때 프록시 초기화가 일어나야 한다.

 

open-in-view: false 설정 후 실행 결과

 

 

위에서 말했듯이 트랜잭션 안에서 처리를 하거나, Fetch join을 사용해야 한다.

 

이 때 아키텍처에 따라 별도의 QueryService를 만들어 관리해주는 것이 좋다.

ex. OrderService

        - OrderService : 핵심 비즈니스 로직

        - OrderQueryService : 화면이나 API에 맞춘 서비스 

 

 

 

 

 

plus. 자바 ORM 표준 JPA 프로그래밍 13장 

 

저작자표시 (새창열림)

'Spring > JPA 2' 카테고리의 다른 글

4. API 개발 고급 - 컬렉션 조회 최적화  (0) 2024.01.09
3. API 개발 고급 - 지연 로딩과 조회 성능 최적화  (1) 2024.01.08
2. API 개발 고급 - 준비  (0) 2023.11.24
1. API 개발 기본  (0) 2023.11.16
'Spring/JPA 2' 카테고리의 다른 글
  • 4. API 개발 고급 - 컬렉션 조회 최적화
  • 3. API 개발 고급 - 지연 로딩과 조회 성능 최적화
  • 2. API 개발 고급 - 준비
  • 1. API 개발 기본
wch_t
wch_t
  • wch_t
    끄적끄적(TIL)
    wch_t
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (171)
      • Architecture (0)
      • Algorithm (67)
        • Math (5)
        • Simulation (1)
        • Data Structure (4)
        • DP (7)
        • Brute Fource (10)
        • Binary Search (6)
        • Greedy (2)
        • Graph (11)
        • Mst (1)
        • Shortest path (10)
        • Two Pointer (1)
        • Tsp (3)
        • Union Find (2)
        • Mitm (1)
      • CS (2)
        • 데이터베이스 (5)
        • 네트워크 (5)
      • DB (6)
      • DevOps (17)
        • AWS (9)
        • Docker (1)
        • CI-CD (5)
      • Error (1)
      • Project (0)
        • kotrip (0)
      • Spring (59)
        • 끄적끄적 (5)
        • 기본 (9)
        • MVC 1 (7)
        • MVC 2 (11)
        • ORM (8)
        • JPA 1 (7)
        • JPA 2 (5)
        • Spring Data Jpa (7)
      • Test (2)
      • TIL (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준 17289 파이썬
    백준 3015 파이썬
    Sxssf
    view algorithm
    docker
    백준 17299 파이썬
    애플
    form_post
    aws secrets manager
    docker: not found
    response_mode
    spring-cloud-starter-aws-secrets-manager-config
    Jenkins
    spring-cloud-starter-bootstrap
    TempTable
    scope
    Merge
    apache poi
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
wch_t
5. API 개발 고급 - 실무 필수 최적화
상단으로

티스토리툴바