querydsl: 7개의 글
pom.xml에 3.6.3 버전의 Querydsl JPA Support모듈을 추가한다. com.mysema.querydsl querydsl-jpa 3.6.3 com.mysema.querydsl querydsl-apt 3.6.3 provided 이어서 plugin을 추가하는데 빌드시 queryDsl 기반 코드가 생성돼야 하므로 출력 디렉터리 정보를 넣어 두어야한다. com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.mysema.query.apt.jpa.JPAAnnotationProcessor 플러그인을 추가할때 부분에서 에러가 나타날 수 있는데 문제는 다음과 동일. 해결 방법을 참고해 해결해야 한다. 스택오버플..
김영한님이 강의하신 실전! Querydsl 강좌를 학습하고 정리한 내용입니다. 소스코드는 Github를 참고해주세요. 시작하기에 앞서 테스트용 MySQL 설치 및 Gradle 프로젝트에서 Querydsl 설정하는 방법에 대해 알아봅니다. Docker MySQL 설치 docker run -d --name test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin007! mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci Gradle에서 Querydsl 설정 build.gradle 파일에 querydsl 설정을 추가한다. 설정을 추가하고 build 또는 compileQuerydsl을 ..
Spring data JPA Querydsl 기능 중에 리포지토리 지원하는QuerydslRepositorySupport을 통해 좀 더 편리한 기능을 사용하고자 합니다. 방법 1. Repository를 방식처럼 JpaRepository을 상속 받는 인터페이스를 만듭니다. 예시 코드 // 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 (MemberRepositoryCustom) public interface MemberRepository extends JpaRepository, MemberRepositoryCustom { List findByUsername(String username); } 2. MemberRepository를 만든다 (여기서는 MemberRepositoryCustom) - 이 인..
JPA - JPAQuery와 Q클래스 긴 포스팅은 아니지만 예제로 소스를 짜는 도중에 몰랐던 내용을 알게되어서 작성한다. QueryDSL로 예제중 나온 상황이다. public List findMyDumbEntities(long id) { QMyEntity qMyEntity = QMyEntity.myEntity; JPAQuery jpaQuery = new JPAQuery(entityManager); MyEntity myFirstEntity = jpaQuery.from(qMyEntity) .where(qMyEntity.id.eq(id)).uniqueResult(qMyEntity); MyEntity mySecondEntity = jpaQuery.from(qMyEntity) .where(qMyEntity.id...
JPA - Criteria Query(객체지향 쿼리 빌더), JPQL Query Builder Class Criteria 쿼리는 JPQL을 자바 코드로 작성하도록 도와주는 빌더 클래스 API이다. Criteria를 사용하면 문자가 아닌 코드로 JPQL를 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 문자 기반의 JPQL보다 동적 쿼리를 안전하게 생성할 수 있다. 하지만 이번에 Criteria를 간단하게만 다루려고 한다. 이유는 실제 Criteria를 사용해서 개발하다보면 코드가 복잡하고 장황하며 직관적으로 이해하기 힘들다는 단점이 있기때문이다. 다음 포스팅에서는 코드로 쿼리를 작성할 수 있고 간단한 QueryDSL을 다음에 자세히 다뤄볼 예정이기에 이번 포스팅은 몇가지 간단하게만 다뤄본다. Cri..
JPA - JPQL(객체지향쿼리) (예제소스파일/ jpql package참조) JPQL은 가장 중요한 객체지향 쿼리 언어이다. Criteria나 QueryDSL은 결국 JPQL을 편리하게 사용하도록 도와주는 기술이므로 JPA로 데이터베이스 엑세스를 다룬다면 JPQL은 꼭 필수라고 생각이 든다. SQL과 꼭 닮은 쿼리 언어이며 SQL은 데이터 중심의 쿼리라고 하면 JPQL은 엔티티를 대상으로 하는 쿼리 언어라고 할 수 있다. 결국 JPA에서 해당 JPQL을 분석한 다음 적절한 SQL로 변환해주어서 데이터베이스에서 데이터를 가져오는 것이다. JPQL 특징 1. 엔티티 객체를 조회하는 객체지향 쿼리이다.(테이블 대상이 아니다.) 2. JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다.(데이터베..
JPA는 쿼리가 너무 정적이라는 단점이 존재합니다. 이러한 단점을 극복하기 위하여 JAP+QueryDSL을 통해 type-safe하고, 자바의 메소드를 통한 동적인(유연한) 쿼리 작성이 가능해집니다. 이전 글에서 JPA사용법에 대하여 간단히 작성했지만 이번 글에서도 JPA부터 설명하겠습니다. pom.xml 설정 JPA 및 querydsl 등 각종 dependency 설정입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65..