본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

JPA/QueryDSL

(13)
QueryDSL 공부 3 - QueryDSL 활용1 1. where 절 검색 조건 쿼리 where 절에 JPQL에서 제공하는 문법을 모두 제공한다 . (= , >= ,, < , like , between 등등 . . ) @Test void search(){ Member findMember = qf .selectFrom(member) .where( // and 사용하지 않고 , 으로도 표현 가능 member.username.eq("member1") ,member.age.eq(10) ,member.username.startsWith("mem") ,member.id.in(1L,2L,3L)) .fetchOne(); assertEquals(findMember.getUsername(),"member1"); assertEquals(findMember.getAge(),..
QueryDSL 공부 2 - Q-Type 활용 엔티티의 Q type을 생성하기 위해선 2가지 방법이 있다 //생성자를 통해 생성 QMember m = new QMember("m"); //스테틱 변수를 활용 QMember m = QMember.member; 스테틱 변수를 활용할 수 있는 이유는 Q Type의 클래스에 들어가 보면 아래 사진 처럼 자기 자신을 스테틱 변수로 저장하는 필드가 있기 때문이다 . QType 객체를 직접 생성해서 사용할 수도 있지만 static import를 통해 객체를 사용하면 코드를 훨씬 깔끔하게 만들 수 있다. @Test public void QueryDSLTest(){ Member member1 = qf .selectFrom(QMember.member) .where(QMember.member.username.eq("mem..
QueryDSL 공부 1 - queryDSL 설정 QueryDSL 은 JPA 를 사용할때 동적쿼리나 복잡한 쿼리들을 자바로 만들어 낼 수 있도록 도와주는 라이브러리이다. 쿼리가 자바로 작성되기 때문에 컴파일 시점에 오류를 잡아낼 수 있고 , 가독성 있게 작성 할 수 있는 것이 장점이다 . 설치를 해보고 QueryDSL이 어떻게 작동 하는지 알아보자 gradle 을 기준으로 설치를 해보려 한다 . spring initializer를 사용하여 프로젝트를 생성할 경우에 추가할 라이브러리 목록에 QueryDSL은 없기 때문에 따로 추가가 필요하다. plugins { id 'org.springframework.boot' version '2.5.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id..
Spring boot -QueryDSL 과 JPQL 차이점 제목엔 차이점이라 적혀있지만 결국 QueryDsl은 JPQL bulider 역할을 한다. (결국엔 jpql로 변환된다) 샘플데이터 팀A.B와 멤버 1234가 persist 되었다 Test 코드에서 @BeforeEach를 사용하면 각 단위별 테스트가 실행되기 전에 @BeforeEach가 붙은 메서드를 먼저 실행한다. 이름이 memberA 인 회원을 JPQL과 queryDsl 로 찾아보았다 1. JPQL createQuery로 jpql을 생성하고 username을 파라미터 바인딩하였다 2.QueryDSL QueryDSL은 queryFactory와 Q-TYPE 객체를 사용하여 쿼리를 생성한다. queryFactory는 엔티티매니저를 파라미터로 받아야 하고 멀티쓰레드에 맞게 설계가 되어있어 필드레벨로 빼서 사용..
Spring boot 프로젝트에 QueryDSL 설정 및 검증 build.gradle로 가서 1.plugin에 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" 입력 2.dependencies에 implementation 'com.querydsl:querydsl-jpa' 입력 3.맨아래에 아래코드 입력 -Q파일 자동 생성하는 코드 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuery..

반응형