본문 바로가기

개발/JPA, Querydsl2

Querydsl의 이론적인 부분 About Querydsl 이란? Querydsl은 타입에 안전한 방식으로 HQL 쿼리를 실행하기 위한 목적으로 탄생. 현재는 JPA, JDO, JDBC, Lucene, Hibernate Search, MongoDB, 콜렉션 그리고 RDFBean을 지원. 원칙 타입 안정성 기존의 HQL(Hibernate HQL)은 String 타입의 연결로 구현할 수 밖에 없는데, 이는 컴파일 시점에 문법 오류, 오타를 잡아줄 수 없음. Querydsl은 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성. 일관성 기반 기술에 상관 없이 (JPA를 사용하든, JDBC를 사용하든 상관없이) 쿼리 경로와 오퍼레이션이 동일. Query interface는 공통의 상위 인터페이스를 갖게 됨. (뇌피셜) .. 2022. 10. 31.
[JPA/Querydsl] 깊은 연관관계에서 query 개수 줄이기 학습 동기 Member가 @OneToMany 관계로 InventoryProducts를 가지고 있는 상황이고, InventoryProduct @ManyToOne으로 Product를 갖고 있는 상황이다. Member의 목록을 페이징하면서 InventoryProducts와 Product까지 불어와야 하는 상황이었는데, 모두 fetch join 하여 가져오기에는 paging 처리에 성능상 문제가 있었다. @OneToMany 관계에서 fetch join을 사용하게 되면 DB 레코드 상에서 카티션 프로덕트가 발생하기 때문에 limit offset 키워드가 쿼리에 포함되지 않는다. 즉, 모든 데이터를 애플리케이션단에 불러온 후 pagination 처리를 하게 된다. 그리하여 Member와 InventoryProduc.. 2022. 10. 26.