querydsl 4

Chapter 06. Spring Data JPA가 지원하는 querydsl 기능

인터페이스 지원- QuerydslPredicateExecutor 앞으로 살펴볼 Spring Data가 제공하는 기능은 제약이 커서 복잡한 실무환경에서 사용하기에는 부족하다. 어떤 한계점이 있을까? Ex) 리포지토리에 적용 Repo QuerydslPredicateExecutor public interface UserRepository extends JpaRepository, QuerydslPredicateExecutor { } Iterable result = userRepository.findAll( member.age.between(10, 40).and(member.username.eq("member1"))); Note) 한계점 묵시적 조인은 가능하나 leftjoin은 불가능하다. 클라이언트가 Query..

Chapter 04. 실무 활용 - 순수 JPA와 Querydsl

순수 JPA repository와 Querydsl Ex) 순수 JPA repository (Spring Data JPA가 아닌 쌩 JPA) @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJpaRepository(EntityManager em) { this.em = em; this.queryFactory = new JPAQueryFactory(em); } public void save(Member member) { em.persist(member); } public Optional findById(Long id)..

Chapter 02. 기본 문법

QueryDSL vs JPQL Ex) member1 찾기 JPQL: Stiring 형태로 쿼리를 직접 작성하고 파라미터를 세팅한다. (setParameter()) QueryDSL: QMember라는 클래스가 있는데 이는 Member를 엔티티로 등록했기 때문에 자동으로 생성된 Q 클래스이다. QueryFactory 구문에서 FROM 절에서 테이블처럼 QMember 인스턴스를 쓸 수 있다. 파라미터를 바인딩 처리한다. @Test public void startJPQL() { String qlString = "SELECT m FROM Member m " + "WHERE m.username = :username"; Member findMember = em.createQuery(qlString, Member.cl..

Chapter 01. QueryDsl 프로젝트 생성 및 환경 설정

프로젝트 설정 dependency: Lombok, JPA, H2, starter 프로젝트 설정: 빌드 실행 배포 => 빌드 도구 => Gradle => 둘다 IntelliJ로 설정한다. 이렇게 해야 자바로 바로 실행할 수 있어서 속도가 빠르다. builde.gradle QueryDSL 사용하기 위해 다음과 같이 추가한다. gradle => clean gradle => compileQuerydsl 위 내용은 터미널로 다음과 같이 입력하는 것과 같다. ./gradlew clean compileQuerydsl 메이븐의 경우는 다음과 같이 clean 한 다음(target 폴더를 삭제), compile를 실행한다. 실행하고 나면 target 폴더가 생성되면서 Q클래스가 새롭게 생성된다. plugins { id '..