본문 바로가기
728x90

queryDSL8

[Spring] Querydsl Join 성능 개선 Querydsl exists 성능 개선에 이어서 Querydsl Join에 대한 글을 정리해보려고 한다. 일단 Cross Join에 대해서 간단하게 정리해보자 Cross Join은 상호 조인이라 불리며, 한 테이블의 모든 컬럼들과 다른 테이블의 모든 컬럼들을 조인되는 기능이며 성능상 잘 나오지 않는다. 두 테이블의 나올 수 있는 모든 경우의 수를 대상으로 하기 때문에 성능이 좋을 수 없다. 그래서 Cross Join은 피하는 게 좋다. 왜 Cross Join을 이야기하는가? 오늘 성능 개선에 대한 내용의 주인공이다. 테스트용 @OneToOne 세팅 Member Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTI.. 2022. 11. 21.
[Spring] Querydsl exists 성능 개선 테스트용 테이블 test1 생성하고 Date 값을 300만건 생성하였다. 조회 대한 테스트는 test1 테이블로 진행해보겠다. 조건에 대한 데이터가 존재하는지에 대한 쿼리 1. count로 조회하여 count > 0 조건으로 존재 여부를 파악할 때 select COUNT(*) > 0 from test1 where create_at > '2022-11-01'; 실행시간 : 331 ms 2. exist로 존재 여부를 파악할 때 select exists(select * from test1 where create_at > '2022-11-01'); 실행시간 : 10ms 두 가지 방식은 실행시간 차이가 많이 난다. 데이터양이 많아질수록 실행시간에 대한 차이는 더 커질 것이다. 이유는 정말 간단하다. 1번 방식은 .. 2022. 11. 20.
[Spring] Querydsl Repository 구현 Querydsl 설정은 Querydsl Gradle 설정 참고 이전 글 작성할 때 테스트했던 player table로 querydsl을 적용해보자. Player Table QuerydslConfiguration @Configuration public class QuerydslConfig { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } } JPAQueryFactory를 서비스에서 주입받아 사용하기 위해 Configuration을 설정해야 한다. Entity Class 생성 player.. 2022. 11. 19.
[Spring] Querydsl Gradle 설정 (Gradle 7.X) Gradle에 Querydsl Dependencies 설정 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.querydsl:querydsl-jpa' // Querydsl 추가 annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // 아래는 NoClassDefFoundError 발생 시 추가 고려사항.. 2022. 11. 18.
300x250