본문 바로가기

JPA 활용23

[JPA] OSIV 성능 최적화 정리 [김영한님의 실전! 스프링 부트와 JPA 활용2 강의 학습 후 정리한 내용입니다.] OSIV란? OSIV(Open Session In View)는 영속성 컨텍스트를 뷰까지 열어두는 기능이다. JPA에서는 OEIV(Open EntityManager In View), Hibernate에서는 OSIV(Open Session In View)라고 하는데, 관례상 둘 다 OSIV라고 부른다. 개발자는 OSIV를 임의로 켜거나 끌 수 있기 때문에 서비스 특성에 맞게 OSIV 전략을 활용할 필요가 있다. 아래에서 자세히 알아보자. OSIV on spring.jpa.open-in-view : true (기본값) 영속성 컨테이너를 뷰까지 열어두게 되면 트랜잭션이 끝나는 컨트롤러 계층에서도 지연 로딩(Lazy Loading.. 2023. 4. 18.
[JPA] 컬렉션 조회 최적화 [김영한님의 실전! 스프링 부트와 JPA 활용2 강의 학습 후 정리한 내용입니다.] 서론 OneToMany관계에서 엔티티를 조회하는 방법을 통해 성능 최적화를 해보자. 여기에서는 Order에서 Member, Delivery에 추가로 OrderItems을 조회하는 API를 예시로 든다. 참고로, Order와 OrderItems가 OneToMany관계이다. 순서 주문 조회 V2 (엔티티를 DTO로 변환) 주문 조회 V3 (엔티티를 DTO로 변환 - 페치 조인 최적화) 주문 조회 V3.1 (엔티티를 DTO로 변환 - 페이징과 한계 돌파) 1. 주문 조회 V2(엔티티를 DTO로 변환) 엔티티를 DTO로 변환하는 일반적인 방법이다. @GetMapping("/api/v2/orders") public List ord.. 2023. 4. 17.
[JPA] 지연 로딩과 조회 성능 최적화 [김영한님의 실전! 스프링 부트와 JPA 활용2 강의 학습 후 정리한 내용입니다.] 서론 xToOne(ManyToOne, OneToOne)관계에서 성능 최적화를 해보자. 여기에서는 Orders를 조회하는 API를 예시로 든다. 참고로, Order와 Member가 ManyToOne관계이며, Delivery와는 OneToOne관계이다. 순서 주문 조회 V2 (엔티티를 DTO로 변환) 주문 조회 V3 (엔티티를 DTO로 변환 - Fetch join 최적화) 주문 조회 V4 (JPA에서 DTO로 바로 조회) 1. 주문조회 V2(엔티티를 DTO로 변환) 엔티티를 DTO로 변환하는 일반적인 방법이다. @GetMapping("/api/v2/simple-orders") public List ordersV2(){ Lis.. 2023. 4. 16.