QueryDsl 도입해보자

박우영·2023년 5월 10일
0

자바/코틀린/스프링

목록 보기
21/37

먼저 gradle 의존성 주입을 해줘야한다.

    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"

스프링 부트 3.0~ 이후버전부턴 jakarta를 꼭 적어줘야함

이건 선택적으로 해주면 된다

compileJava {
    options.compilerArgs << '-Aquerydsl.generatedAnnotationClass=javax.annotation.Generated'
}

def querydslDir = "$buildDir/generated/querydsl"

sourceSets {
    main.java.srcDirs += [querydslDir]
}

clean.doLast {
    file(querydslDir).deleteDir()
}

그 뒤 config 설정을 해준다.

@Configuration
public class QueryDslConfig {
    @PersistenceContext
    private EntityManager em;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(em);
    }
}

QueryDslPostRepository

public interface QueryDslPostRepository {
    List<Post> findAll(Keyword keyword);
}

QueryDslPostRepositoryImp

@Repository
@RequiredArgsConstructor
public class QueryDslPostRepositoryImp implements QueryDslPostRepository {
    private final JPAQueryFactory jpaQueryFactory;


    @Override
    public List<Post> findAll(Keyword keyword) {
        jpaQueryFactory.select(QPost.post);
        return null;
    }
}

만약 Q클래스가 나오지않는다면 build를 다시 해보거나, 한번 실행해주면 된다.

5.15 수정


spring cloud config와 연동할때 문제점이 식별 되었고 그 수정사항은 여기를 눌러주세요

0개의 댓글