인프런 커뮤니티 질문&답변

카게호님의 프로필 이미지
카게호

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

query dsl 간헐적으로 작동 안 하는경우

작성

·

179

0

안녕하세요 강사님 강의 덕분에 잘 배우고 졸업을 앞두고 있는 학생입니다.

jpa domain을 nexus에 올려 실제 프로젝트에 dependency를 추가하여 사용하고 있었는데

도메인이 수정될 때마다 nexus에 배포하고 dependency 버전을 변경해야하는 번거로움 때문에 하나로 합치는 작업을 했습니다.

실제 프로젝트로 합쳐진 entity들이 잘 import 될 수 있도록 경로도 다 수정해주고 qclass도 정상적으로 생성되었으나 프로젝트 재구동시 간헐적으로 querydsl이 작동하지 않는 오류가 있습니다...

qclass도 잘 import 됐고 정상 작동될 때는 잘 되다가 재구동 2~3번에 한번꼴로 qclass를 참조하는 api는 작동하지 않습니다...

qclass 사용하지 않는 api들은 정상 작동합니다.. 간헐적으로 오류가 나니 컴파일시점에 메모리가 부족하여 qclass 생성을 제대로 못 해주나 싶어서 heap 사이즈도 늘려보았으나 똑같은 상황입니다.

 

디버그 모드로 확인하니 QMember a = new QMember(); 이 코드 까지는 오는데 다음 프로세스로 넘어가지도 않고 에러 로그또한 찍히지 않으며 그냥 끝나버리는 것 같습니다.

 

혹시 왜 이런 현상이 나는지 알려주실 수 있나요 ㅠㅠ

 

spring boot 2.1.62

java 1.8

querydsl 4.4.0

 

사용중입니다.

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 카게호님

Querydsl 관련해서는 Querydsl 강의 게시판에 문의 올려주세요.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

님의 경우 Querydsl 설정이나 빌드 과정에서 문제가 발생하는 것으로 보입니다.
실제로 Querydsl의 Q 클래스들이 정상적으로 생성되었고, 때때로 작동하지 않는 상황은 주로 빌드 과정에서의 문제나, IDE의 인덱싱 문제일 때 많이 발생합니다.

먼저 간헐적으로 발생하는 문제이기 때문에, 다음과 같은 점들을 확인해보시는 것을 권장드립니다:

  1. Gradle이나 Maven 등의 빌드 도구의 clean 후에 build나 compileJava 등의 태스크를 수행하여 Q 클래스가 정상적으로 재생성되는지 확인하세요.
  2. IDE의 캐시 문제일 수 있으므로, IntelliJ나 Eclipse 등의 IDE 캐시를 인발리데이트 한 다음, 프로젝트를 재시작해보세요.
  3. 메모리 문제를 의심하셨는데, JVM 옵션에서 Xms와 Xmx값을 적절하게 조정하여, IDE와 프로젝트 빌드 프로세스에 충분한 메모리를 할당해주세요.
  4. 프로젝트 설정에서 Q 클래스가 생성되는 경로가 전역적으로 인식되고 있는지 확인하시고, .gitignore나 다른 설정 파일에서 해당 경로가 제외되지 않았는지도 확인해보세요.

spring boot 2.1.62java 1.8, querydsl 4.4.0 사용 중이라고 하셨는데, 가능하다면 스프링 부트나 Querydsl의 버전을 업데이트 해보는 것도 한 방법일 수 있습니다. 이전 답변에서 인용된 정보에 따르면 build.gradle에 Querydsl 관련 설정이 있는 예제가 있었으니 참고해보셔도 좋을 것 같습니다. 현재 상황과 가장 유사한 환경을 위해 스프링 부트 2.x 설정을 참고하세요.

plugins {
    id 'org.springframework.boot' version '2.6.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}
...
dependencies {
    ...
    // Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
    ...
}
...

원본 문서 URL: 여기에서 해당 설정을 확인하실 수 있습니다.

위의 정보들을 참고하여 문제 해결에 도움되시길 바랍니다.

카게호님의 프로필 이미지
카게호

작성한 질문수

질문하기