230802(수)-TIL

조우진·2023년 8월 2일
0

TIL

목록 보기
27/28

오늘 배운 내용

queryDSL

최신 자바 백엔드 기술

  • 자바언어의 한계를 넘어 쿼리를 자바코드로 작성하도록 도와줌
  • 문법 오류를 컴파일 시점에 잡아줌
  • 동적 쿼리 문제 해결

사용 예제
1. build.gradle을 이용하여 QueryDSL 관련 의존성 추가 -> 빌드하여 Q클래스 자동생성

dependencies {
    // QueryDSL 적용을 위한 의존성 (SpringBoot3.0 부터는 jakarta 사용해야함)
    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"
...

}

2.Q클래스를 사용하여 쿼리 작성

import static com.sparta.blog.blog.entity.QBlog.blog; //생성된 Q클래스를 import

...
    public Page<Blog> search(BlogSearchCond cond, Pageable pageable) {
        var query = jpaQueryFactory
                .selectFrom(blog)
                .where(
                        blog.title.contains(cond.getTitle())
                ).offset(pageable.getOffset()).limit(pageable.getPageSize());

        query.orderBy(blog.createdAt.desc());
        var blogs = query.fetch();
        ...

Q클래스 : QueryDSL 라이브러리를 사용할 때 자동으로 생성되는 클래스로, 엔티티 클래스를 기반으로 쿼리 작성을 도와주는 도구

  • 엔티티클래스의 이름에 Q를 접두어로 붙이는 방식으로 생성됨.
  • 주로 JPAQueryFactory와 함께 사용되어 안전한 쿼리 작성을 지원
  • 문자열 기반의 쿼리작성 대신 자바 코드로 쿼리를 작성할 수 있어 타이핑/문법 오류 방지
profile
공부노트

1개의 댓글

comment-user-thumbnail
2023년 8월 2일

유익한 글이었습니다.

답글 달기