Querydsl 은 다른 설정들과 달리 Spring Initializr 를 활용할 수 없다.
직접 설정하는 방법을 알아보자.
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
위 설정을 dependencies 에 넣어 querydsl 을 다운로드받는다.
검증용 더미 엔티티를 하나 생성한다.
@Entity
public class Hello {
@Id @GeneratedValue
private Long id;
}
애플리케이션을 실행시킨다.
build/generated/sources/annotationProcessor 하위에 querydsl 이 엔티티를 잘 생성해주었는지 확인한다.
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QHello extends EntityPathBase<Hello> {
private static final long serialVersionUID = 1910216155L;
public static final QHello hello = new QHello("hello");
public final NumberPath<Long> id = createNumber("id", Long.class);
public QHello(String variable) {
super(Hello.class, forVariable(variable));
}
public QHello(Path<? extends Hello> path) {
super(path.getType(), path.getMetadata());
}
public QHello(PathMetadata metadata) {
super(Hello.class, metadata);
}
}
@Test
void querydslTest() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
QHello qHello = QHello.hello;
Hello result = queryFactory
.selectFrom(qHello)
.fetchOne();
assertThat(result).isEqualTo(hello);
assertThat(result.getId()).isEqualTo(hello.getId());
}
querydsl 문법은 이후에 다루겠지만, 생성된 QHello 를 통해 원본 Hello를 잘 가져오는 것을 검증해볼 수 있다.