본문 바로가기

Query DSL

Querydsl gradle 4줄 초간단 설정

build.gradledependencies에 다음 4줄만 추가해주면 QueryDSL 설정이 끝나게 된다.

com.ewerk.gradle.plugins.querydsl plugin을 사용한다면 지워버리자.
해당 plugin은 2018년 7월에 마지막 업데이트가 있었고,
지금의 gradle(7.4)과는 호환이 잘 안 된다.

 

dependencies {
    //querydsl
    implementation 'com.querydsl:querydsl-jpa'
    annotationProcessor("com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa")
    annotationProcessor("jakarta.persistence:jakarta.persistence-api")
    annotationProcessor("jakarta.annotation:jakarta.annotation-api")
	
    //생략
}

 


Test code 작성

package study.querydsl.entity;

//import 생략

@Data @Entity
@Setter(AccessLevel.NONE)
public class TestEntity {
    @Id @GeneratedValue
    private Long id;

}

Id 필드만 가지고 있는 TestEntity를 만들었다.
이제 프로젝트를 build하면 /build/generated 하위에 QTestEntity가 생성된다.

 

package study.querydsl;

//import 생략

@Transactional
@SpringBootTest
class QuerydslApplicationTests {
	@Autowired
	EntityManager em;

	@Test
	void contextLoads() {
		TestEntity t = new TestEntity();
		em.persist(t);

		JPAQueryFactory jpa = new JPAQueryFactory(em);

		TestEntity result = jpa.selectFrom(QTestEntity.testEntity)
				.where(QTestEntity.testEntity.id.eq(t.getId()))
				.fetchOne();

		assertThat(result).isEqualTo(t);
	}

}

test code도 잘 동작하는 것을 확인할 수 있을 것이다.