queryDSL4 Querydsl 실무 활용편 (1) 순수 JPA 와 Querydsl MemberJpaRepository @Repository @RequiredArgsConstructor public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public void save(Member member) { em.persist(member); } public Optional findById(Long id) { Member member = em.find(Member.class, id); return Optional.ofNullable(member); } public List findAll() { return em.creat.. 2021. 5. 2. Querydsl 중급 문법 프로젝션과 결과 반환 - 기본 프로젝션이란 SELECT 대상을 지정하는 것을 의미한다. @DisplayName("프로젝션 대상이 하나인 경우") @Test void simpleProjection() { // given // when List result = queryFactory .select(member.username) .from(member) .fetch(); // then assertThat(result).isNotNull(); result.forEach(name -> System.out.println("name = " + name)); } @DisplayName("Tuple 사용 - 프로젝션 대상이 두 개 이상인 경우") @Test void tupleProjection() { // given /.. 2021. 4. 28. Querydsl 기본 문법 기본 Q-Type 활용 Q클래스 인스턴스를 사용하는 2가지 방법 QMember member = new QMember("m");// 직접 별칭 주어 새롭게 생성하여 사용 QMember member = QMember.member; // 이미 생성된 인스턴스 사용 새롭게 생성하여 사용하는 경우엔 생성자 안에 별칭을 넣어 사용하면 된다. 그러나, 기본적으로 생성된 인스턴스를 사용하는 것을 권장한다. 실제 사용 시 관련 Q Class 를 static import 하여 사용하는 것을 추천 import static study.querydsl.entity.QMember.*; @DisplayName("QMember static import 하여 사용") @Test void querydsl() { // given: QMe.. 2021. 4. 26. Querydsl 사용 개요 최신 백엔드 기술로는 주로 Spring Boot 와 Spring Data JPA 사용한다. 그렇지만, 복잡한 쿼리나 동적 쿼리에 대해서 불편함이 존재한다. 이러한 상황 속에서 마지막 퍼즐 조각처럼 사용할 수 있는 기술이 바로 Querydsl 이다. Querydsl 의 경우 다음과 같은 특징을 가진다. 쿼리를 자바 코드로 작성할 수 있도록 해준다. 그리고 이러한 경우 컴파일 시점에 문법적인 오류를 잡아낼 수 있다. 또한, 복잡한 쿼리 즉 동적 쿼리에 대해서 편의성을 제공해준다. 스프링 데이터 JPA + Querydsl 사용은 선택이 아닌 필수 관계형 DB 를 사용하며, 복잡한 핵심 비즈니스 로직을 개발하는데 있어 Querydsl 은 필수적인 기술이다. 이는 단순 반복 문제를 해결해주며, 쿼리를 자바 코드로.. 2021. 4. 25. 이전 1 다음