처음 회사에서 들어 왔을때 개발 환경 세팅을 하는데 몇가지 문제가 발생했었는데 그중에서 가장 기억에 남았던 부분이 바로 q 파일 설치 관련해서 기억에 남았습니다. 

 

Q 클래스(q 파일)은?

QueryDSL에서 Q-파일은 특정 엔티티에 대한 메타모델을 자동으로 생성된 자바 클래스로 제공합니다. 이러한 파일들은 QueryDSL이 제공하는 타입-세이프한 쿼리 구성을 가능하게 하는 중요한 부분입니다. 이 Q-클래스들을 사용함으로써 개발자는 컴파일 시간에 타입 체크를 받을 수 있으며, IDE의 자동완성 기능을 활용하여 더욱 빠르고 정확하게 쿼리를 작성할 수 있습니다

 

Q-클래스 또는 Q-파일의 역할

  • 메타모델 생성: Q-클래스는 각 엔티티의 속성에 대한 메타데이터를 제공하며, 이를 통해 쿼리를 작성할 때 컴파일 시간에 타입 체크가 가능합니다.
  • 타입-세이프 쿼리 작성: 이 클래스들은 쿼리를 작성할 때 변수명이나 타입 오류를 컴파일 단계에서 잡아내어 런타임 에러의 가능성을 줄여줍니다.
  • 코드 자동 완성 지원: IDE에서 Q-클래스의 속성을 사용할 때 자동 완성 기능을 제공받을 수 있어 쿼리 작성이 더 빠르고 정확해집니다.

Q-클래스의 생성

QueryDSL은 APT(Annotation Processing Tool)를 사용하여 엔티티 클래스를 기반으로 Q-클래스를 자동 생성합니다. 이 과정은 Maven이나 Gradle과 같은 빌드 도구의 설정을 통해 자동화할 수 있습니다.

 

ex)

@Entity
public class Book {
    @Id
    private Long id;
    private String title;
    private String author;
}
public class QBook extends EntityPathBase<Book> {
    public static final QBook book = new QBook("book");

    public final NumberPath<Long> id = createNumber("id", Long.class);
    public final StringPath title = createString("title");
    public final StringPath author = createString("author");

    public QBook(String variable) {
        super(Book.class, forVariable(variable));
    }
}
QBook qBook = QBook.book;
JPAQuery<?> query = new JPAQuery<>(entityManager);
List<Book> books = query.select(qBook)
                        .from(qBook)
                        .where(qBook.author.eq("J.K. Rowling"))
                        .fetch();

 

여기서 문제가 되었던게 서버가 4개로 나눠져있어서 

( A ) <-> ( B ) <-> (C ) <-> (D )    너무 많아.. ㅠ Q 파일이 가끔 제대로 설치가 안될떄가 있었는데 .. 아직 정확한 원인을 봐야할것같은데 원인을 모르겠다.... ㅠㅠ 

 

에러코드

java: cannot find symbol
  symbol:   class QWorkFlowInfoEntity

일단 clean 후 install 해서 해결은 했는데 ... 이게 맞는건가 싶다.. 정확한 queryDsl과 q파일에 대해서 더 정확하게 알아야할것같다.

' > QueryDSL' 카테고리의 다른 글

Query DSL 이란?  (0) 2024.04.20

+ Recent posts