ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Querydls의 기본 설정
    JPA/Querydsl 2023. 8. 12. 21:11

    start.spring.io에서 프로젝트를 만들면 기본으로 생성되는 gradle.build에 주석으로 처리된 부분들을 추가해줘야 한다. querydls은 spring-boot 처음 생성 시에 추가해주지 않기 때문에 수동으로 설정해줘야 한다.

     

    스프링 부트 3.0 기준 설정

    buildscript {
    	ext {
    		queryDslVersion = "5.0.0"
    	}
    }
    
    plugins {
    	id 'java'
    	id 'org.springframework.boot' version '3.1.2'
    	//querydsl 추가
    	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
    	id 'io.spring.dependency-management' version '1.1.2'
    }
    
    group = 'study'
    version = '0.0.1-SNAPSHOT'
    
    java {
    	sourceCompatibility = '17'
    }
    
    configurations {
    	compileOnly {
    		extendsFrom annotationProcessor
    	}
    }
    
    repositories {
    	mavenCentral()
    }
    
    dependencies {
    	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    	implementation 'org.springframework.boot:spring-boot-starter-web'
    
    	//querydsl 추가
    	implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
    	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    
    	compileOnly 'org.projectlombok:lombok'
    	runtimeOnly 'com.h2database:h2'
    
    	annotationProcessor 'org.projectlombok:lombok'
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
    
    tasks.named('test') {
    	useJUnitPlatform()
    }
    
    // querydsl 추가 시작
    def querydslDir = "$buildDir/generated/querydsl"
    querydsl {
    	jpa = true
    	querydslSourcesDir = querydslDir
    }
    sourceSets {
    	main.java.srcDir querydslDir
    }
    configurations {
    	querydsl.extendsFrom compileClasspath
    }
    compileQuerydsl {
    	options.annotationProcessorPath = configurations.querydsl
    }
    //querydsl 추가 끝

     

     

    @Entity
    @Getter @Setter
    public class Hello {
    
        @Id @GeneratedValue
        private Long id;
    }

    Hello라는 엔티티가 있을 때

     

    gradle에서 other -> compileJava을 눌러주면

     

    build 폴더에 Q파일이 만들어진다.

     

     

    generated된 Q파일은 깃에 올리면 안된다. gitignore 등을 통해서 git에 올리지 않는 방법을 생각해야한다.

     

     

     

    querydsl은 기본적으로 Q파일을 사용해야 한다.

    @Test
    void contextLoads() {
        Hello hello = new Hello();
        em.persist(hello);
    
        JPAQueryFactory query = new JPAQueryFactory(em);
        QHello qHello =  QHello.hello;
    
        Hello result = query
    	    	.selectFrom(qHello)
    	        .fetchOne();
    
        assertThat(result).isEqualTo(hello);
        assertThat(result.getId()).isEqualTo(hello.getId());
    }

    위와 같이 Q파일을 이용해서 querydsl을 사용하는 예제를 봤다.

    'JPA > Querydsl' 카테고리의 다른 글

    Querydsl - 서브 쿼리  (0) 2023.08.13
    Querydsl - 조인  (0) 2023.08.13
    Querydsl - 정렬과 페이징, 집합  (0) 2023.08.12
    Querydsl - 검색(select)과 결과 조회  (0) 2023.08.12
    Querydls과 JPQL의 차이  (0) 2023.08.12
Designed by Tistory.