Working/jpa 성능 최적화
-
컬렉션 조회 최적화(oneToMany)Working/jpa 성능 최적화 2021. 3. 2. 19:01
- v1 : Entity 직접 노출 Order -> List -> item별 name (lazy loading 초기화) - v2 : DTO로 변환 리턴 DTO 안에 Entity가 Wrapping 되어있다. OrderItem 도 DTO로 바꿔야 됨 결과 List 안에 또 List가 있으면 N^2으로 쿼리가 늘어남 컬렉션 경우에도 Fetch Join으로 최적화 가능 - v3 : Fetch Join 원하지 않게 join이 많이 됨 distinct o 추가로 사용하면 유니크하게 나옴 sql 쿼리는 1번만 요청한다. 단점 - 페이징 불가능 - v3.1 : 컬렉션을 페치조인 하면 페이징 불가 1:N 조인 -> 데이터가 N개가 된다, 데이터는 N을 기준으로 페이징이 됨 -> 1을 기준으로 하고싶다. 1. xToOne..
-
지연 로딩과 조회 성능 최적화Working/jpa 성능 최적화 2021. 3. 2. 18:08
xToOne(ManyToOne, OneToOne) Order Order -> Member Order -> Delivery 양방향 연관관계가 걸리는 컬럼들 -> @JsonIgnore 옵션을 한곳에 주어야 한다. @ManyToOne(fetch=LAZY) -> ByteBuddyInterceptor() 가짜 프록시 객체를 넣어둠 -> 접근 할때 db 실제 조회 Jackson DataType Hibernate5 - 지연 로딩 -> null(옵션 조절 해서 조회 하게도 가능) - 불필요 엔티티 외부 노출 X - 이 모듈을 따로 사용하기 보다는 DTO로 변경해서 반환하는게 best Lazy-Loading - 너무 많은 테이블을 조회 해야 하는 경우 중요한 성능 문제 ORDER -> SQL 1번 -> 결과 row 2개..