Spring/[인프런] 실전! Querydsl

    스프링 데이터 JPA가 제공하는 Querydsl 기능

    목차 인터페이스 지원 - QuerydslPredicateExecutor Querydsl Web 지원 리포지토리 지원 - QuerydslRepositorySupport Querydsl 지원 클래스 직접 만들기 여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족하다. 그래도 스프링 데이터에서 제공하는 기능이므로 간단히 소개하고, 왜 부족한지 설명하겠다. 인터페이스 지원 - QuerydslPredicateExecutor 공식 URL: https://docs.spring.io/spring-data/jpa/docs/2.2.3.RELEASE/reference/html/#core.extensions.querydsl QuerydslPredicateExecutor 인터페이스 public in..

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    목차 스프링 데이터 JPA 리포지토리로 변경 사용자 정의 리포지토리 스프링 데이터 페이징 활용1 - Querydsl 페이징 연동 스프링 데이터 페이징 활용2 - CountQuery 최적화 스프링 데이터 페이징 활용3 - 컨트롤러 개발 스프링 데이터 JPA 리포지토리로 변경 스프링 데이터 JPA - MemberRepository 생성 package study.querydsl.repository; import org.springframework.data.jpa.repository.JpaRepository; import study.querydsl.entity.Member; import java.util.List; public interface MemberRepository extends JpaRepositor..

    순수 JPA와 Querydsl

    목차 순수 JPA 리포지토리와 Querydsl 동적 쿼리와 성능 최적화 조회 - Builder 사용 동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용 조회 API 컨트롤러 개발 순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 package study.querydsl.repository; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.stereotype.Repository; import study.querydsl.entity.Member; import javax.persistence.EntityManager; import java.util.List; import java.util.Optional;..

    중급 문법

    목차 프로젝션과 결과 반환 - 기본 프로젝션과 결과 반환 - DTO 조회 프로젝션과 결과 반환 - @QueryProjection 동적 쿼리 - BooleanBuilder 사용 동적 쿼리 - Where 다중 파라미터 사용 수정, 삭제 벌크 연산 SQL function 호출하기 프로젝션과 결과 반환 - 기본 프로젝션: select 대상 지정 프로젝션 대상이 하나 @Test public void simpleProjection(){ List fetch = queryFactory .select(member.username) .from(member) .fetch(); } 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회 튜플 조회 프로젝션 대상이 둘 이상일 ..

    기본 문법

    목차 시작 - JPQL vs Querydsl 기본 Q-Type 활용 검색 조건 쿼리 결과 조회 정렬 페이징 집합 조인 - 기본 조인 조인 - on절 조인 - 페치 조인 서브 쿼리 Case 문 상수, 문자 더하기 시작 - JPQL vs Querydsl 테스트 기본 코드 @SpringBootTest @Transactional public class QuerydslBasicTest { @PersistenceContext EntityManager em; @BeforeEach public void before() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member me..

    예제 도메인 모델

    예제 도메인 모델

    예제 도메인 모델과 동작확인 Member 엔티티 package study.querydsl.entity; import lombok.*; import javax.persistence.*; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(na..

    프로젝트 환경설정

    목차 프로젝트 생성 Querydsl 설정과 검증 라이브러리 살펴보기 H2 데이터베이스 설치 스프링 부트 설정 - JPA, DB 프로젝트 환경설정 프로젝트 생성 스프링 부트 스타터(https://start.spring.io/) 사용 기능: Spring Web, jpa, h2, lombok SpringBootVersion: 2.6.6 groupId: study artifactId: querydsl Gradle 전체 설정 plugins { id 'org.springframework.boot' version '2.6.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'study' version = '0.0.1-..