Spring-Boot/실전! Querydsl
-
7. 스프링 데이터 JPA가 제공하는 Querydsl 기능Spring-Boot/실전! Querydsl 2023. 3. 31. 09:21
- 여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족하다. - 그래도 스프링 데이터에서 제공하는 기능이므로 간단히 소개하고, 왜 부족한지 설명한다. 1. 인터페이스 지원 - QuerydslPredicateExecutor public interface MemberRepository extends JpaRepository, MemberRepositoryCustom, QuerydslPredicateExecutor { } @Test public void querydslPredicateExecutorTest() { QMember member = QMember.member; Iterable result = memberRepository.findAll(member.age.between(..
-
6. 실무 활용 - 스프링 데이터 JPA와 QuerydslSpring-Boot/실전! Querydsl 2023. 3. 30. 15:00
1. 스프링 데이터 JPA 리포지토리로 변경 2. 사용자 정의 리포지토리 * 사용자 정의 리포지토리 사용법 * 1. 사용자 정의 인터페이스 작성 2. 사용자 정의 인터페이스 구현 3. 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 * 쿼리가 복잡하거나 특화된 기능, 공용성없고, 특정 API에 종속시에는 class를 분리해서 만들어준다. 3. 스프링 데이터 페이징 활용1 - Querydsl 페이징 연동 - 스프링 데이터의 Page, Pageable을 활용 - 전체 카운트를 한번에 조회하는 단순한 방법 - 데이터 내용과 전체 카운트를 별도로 조회하는 방법 4. 스프링 데이터 페이징 활용2 - CountQuery 최적화 - 스프링 데이터 라이브러리가 제공 - count 쿼리가 생략 가능한 경우 생략해..
-
4. 실무 활용 - 순수 JPA와 QuerydslSpring-Boot/실전! Querydsl 2023. 3. 20. 14:58
1. 순수 JPA 리포지토리와 Querydsl - 순수 JPA 리포지토리와 Querydsl - 동적쿼리 Builder 적용 - 동적쿼리 Where 적용 - 조회 API 컨트롤러 개발 * 참고 : 동시성 문제는 걱정하지 않아도 된다. - 왜냐하면 여기서 스프링이 주입해주는 엔티티 매니저는 실제 동작 시점에 진짜 엔티티 매니저를 찾아주는 프록시용 가짜 엔티티 매니저이다. - 이 가짜 엔티티 매니저는 실제 사용 시점에 트랜잭션 단위로 실제 엔티티 매니저(영속성 컨텍스트)를 할당해준다. 2. 동적 쿼리와 성능 최적화 조회 - Builder 사용 3. 동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용 4. 조회 API 컨트롤러 개발
-
3. 중급 문법Spring-Boot/실전! Querydsl 2023. 3. 17. 18:11
1. 프로젝션과 결과 반환 - 기본 - 프로젝션 : select 대상 지정 프로젝션 대상이 하나 List result = queryFactory .select(member.username) .from(member) .fetch(); - 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음 - 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회 튜플 조회 - 프로젝션 대상이 둘 이상일 때 사용 - `com.querydsl.core.Tuple` * tuple 도 repository 계층안에서만 쓰는 것을 권장 2. 프로젝션과 결과 반환 - DTO 조회 * 순수 JPA에서 DTO 조회 * - 순수 JPA에서 DTO를 조회할 때는 new 명령어를 사용해야함 - DTO의 package 이름을 다 적어줘야해서 지..
-
2. 기본문법Spring-Boot/실전! Querydsl 2023. 3. 13. 17:53
1. 시작 - JPQL vs Querydsl 2. 기본 Q-Type 활용 * Q 클래스 인스턴스를 사용하는 2가지 방법 * // java QMember qMember = new QMember("m");// 별칭 직접 지정 QMember qMember = QMember.member;// 기본 인스턴스 사용 3. 검색 조건 쿼리 - JPQL이 제공하는 모든 검색 조건 제공 member.username.eq("member1") // username = 'member1' member.username.ne("member1") //username != 'member1' member.username.eq("member1").not() // username != 'member1' member.username.isNot..
-
1. 프로젝트 환경설정 & 예제 도메인 모델Spring-Boot/실전! Querydsl 2023. 3. 8. 18:30
Querydsl ㆍ쿼리를 자바 코드로 작성 ㆍ문법 오류를 컴파일 시점에 ㆍ동적 쿼리 문제 해결 ㆍ쉬운 SQL 스타일 문법 1. 프로젝트 생성 2. Querydsl 설정과 검증 3. 라이브러리 살펴보기 * gradle 의존관계 보기* `./gradlew dependencies --configuration compileClasspath` * Querydsl 라이브러리 살펴보기 * - querydsl - apt : Querydsl 관련 코드 생성 기능 제공 - querydsl - jpa : querydsl 라이브러리 4. H2 데이터베이스 설치 5. 스프링 부트 설정 - JPA, DB 1. 예제 도메인 모델과 동작확인