본문 바로가기

QueryDSL3

[리팩토링] QueryDSL 도입기 0. 현재 상황 미뤄왔던 QueryDSL을 도입해보려 한다. 도입해야할 시기라는 것을 가장 크게 느낀 것은 아래 쿼리메소드를 작성했을 때이다. 메소드의 이름만으로도 쿼리문을 자동으로 작성해주는 Spring Data JPA 의 기능이지만 단점으로는 저렇게 너무 길어지기도 한다. 알아보기가 어렵다. QueryDSL는 동적쿼리를 생성하는 데에 있어서도 장점이 있지만, 한눈에 쿼리의 내용이 잘 파악이 되기도 하니 이를 기대해보며 개선해보려 한다. 1. QueryDsl 세팅 이전에 관련해서 설정을 마쳤기에 세팅관련한 자료는 아래 이전에 작성해뒀던 포스팅을 참고했다. 이전 포스팅 링크로 방법은 갈무리한다. https://thiswooin.tistory.com/68 TIL 230801 : QueryDSL 쓰려고 정리.. 2023. 12. 1.
TIL 230802 : QueryDsl 사용하기 (JPAQueryFactory) 드디어 숱한 개념정리 끝에 QueryDsl을 사용할 순간이 왔다. 정리 1. QueryDsl 은 오픈소스 라이브러리이다. 2. 쿼리를 직접 쓰는 게 아니라 코드 형태로 쿼리를 만들 수 있게 해주는 방법들 중 하나다. (근데 현업에서 잘 쓴다) 3. QueryDsl에서 Q객체를 생성해서 객체를 활용한 쿼리를 만드는 데 쓰인다. 4. Q객체로 BooleanExpression을 만들 수도 있고, 쿼리에 필요한 변수를 만들 수도 있다. 5. Predicate를 활용하여 조건문을 만들어서 사용할 수도 있지만, JPAQueryFactory를 사용할 수도 있다. (현업에서 더 자주 쓰임.) 오늘은 JPAQueryFactory와 Q객체를 사용해서 DB기능을 만들어본다. QueryDsl로 로직 만들고 기존 구성에 추가하.. 2023. 8. 3.
TIL 230801 : QueryDSL 쓰려고 정리하는 배경지식들 (Predicate) 동적 쿼리 무조건 name만 가지고 조회하는 쿼리는 정적이다. 하지만 name이 아니라 age도 같이 조건으로 user를 조회하는 쿼리가 온다면? 아니면 아예 age만 조건으로 받는다면? 순간순간 다른 경우에 대응할 수 있게 그에 따른 쿼리가 만들어질 수 있게 하는게 동적쿼리라고 이해된다. https://ssdragon.tistory.com/91 https://tecoble.techcourse.co.kr/post/2022-10-11-jpa-dynamic-query/ 위 링크에서 소개되어 있는데, 동적쿼리를 쓰는 몇가지방법이 있는데 그중 하나가 QueryDSL이다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate.. 2023. 8. 2.