사용자 도구

사이트 도구


java:querydsl

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
java:querydsl [2017/06/20 11:01]
kwon37xi
java:querydsl [2019/03/30 21:37]
kwon37xi
줄 1: 줄 1:
 ====== QueryDSL ====== ====== QueryDSL ======
   * http://www.querydsl.com/   * http://www.querydsl.com/
 +  * [[java:jpa|JPA]] 쿼리를 더 편리하게 생성할 수도 있고
 +  * [[java:querydsl:nativesql|QueryDSL Native SQL]]로 Native SQL도 생성 가능하다.
   * [[http://www.querydsl.com/static/querydsl/latest/reference/html/|QueryDSL Reference]]   * [[http://www.querydsl.com/static/querydsl/latest/reference/html/|QueryDSL Reference]]
   * Querydsl is a framework which enables the construction of type-safe SQL-like queries for multiple backends including JPA, JDO and SQL in Java.   * Querydsl is a framework which enables the construction of type-safe SQL-like queries for multiple backends including JPA, JDO and SQL in Java.
줄 10: 줄 12:
 ClassPathUtils.scanPackage(Thread.currentThread().getContextClassLoader(), packageToLoad); ClassPathUtils.scanPackage(Thread.currentThread().getContextClassLoader(), packageToLoad);
 </code> </code>
 +
 ===== join 성능 향상 ===== ===== join 성능 향상 =====
   * Join 시 그 결과로 나오는 관계 객체를 Eager Loading 하려면 ''fetch()'' 를 사용해야 한다.   * Join 시 그 결과로 나오는 관계 객체를 Eager Loading 하려면 ''fetch()'' 를 사용해야 한다.
줄 33: 줄 36:
     .where(parent.something.gt(child.somthing))....;     .where(parent.something.gt(child.somthing))....;
 </code> </code>
 +
 +===== JPA Subquery & JPAExpressions =====
 +  * JPA Subquery 는 ''JPAExpressions.select'' 를 이용하여 각종 Sub Query 생성가능.
 +  * SELECT 에서 사용할 때는 ''ExpressionUtils.as([subquery])'' 로 묶어준다.
  
 ===== Native 조건 condition ===== ===== Native 조건 condition =====
줄 77: 줄 84:
 } }
 </code> </code>
 +
 +===== Case/When =====
 +  * [[https://jojoldu.tistory.com/401|[Querydsl] Case When 사용하기]]
 +  * ''CaseBuilder'' 사용.
  
 ===== @Embeddable의 필드 소스 생성 ===== ===== @Embeddable의 필드 소스 생성 =====
줄 84: 줄 95:
 ==== Metamodel 생성 ==== ==== Metamodel 생성 ====
   * [[gradle:jpa_metamodel_generation|Gradle에서 JPA 2 MetaModel 생성]] 참조.   * [[gradle:jpa_metamodel_generation|Gradle에서 JPA 2 MetaModel 생성]] 참조.
 +  * [[gradle:querydsl_native_sql_codegen|Gradle 에서 Native SQL Code Generation]] 참조.
   * Java 7에서 ''SimpleSerializerConfig.getConfig''에서 ''NullPointerException'' 발생하는 경우가 있는데 이는 QueryDSL과 아무 상관 없는 코드 중에 의존성에 들어가지 않는 Annotation을 넣은게 있었기 때문이었다(Java 8에서는 올바른 컴파일 오류 지점이 보였음).<code>   * Java 7에서 ''SimpleSerializerConfig.getConfig''에서 ''NullPointerException'' 발생하는 경우가 있는데 이는 QueryDSL과 아무 상관 없는 코드 중에 의존성에 들어가지 않는 Annotation을 넣은게 있었기 때문이었다(Java 8에서는 올바른 컴파일 오류 지점이 보였음).<code>
 Caused by: java.lang.NullPointerException Caused by: java.lang.NullPointerException
줄 98: 줄 110:
   * [[http://luisfpg.blogspot.kr/2013/02/the-beauty-of-querydsl-in-sorting.html|Free IT / Luis Fernando Planella Gonzalez: The beauty of Querydsl: calling database functions]] 사용자 정의 함수 호출 기법   * [[http://luisfpg.blogspot.kr/2013/02/the-beauty-of-querydsl-in-sorting.html|Free IT / Luis Fernando Planella Gonzalez: The beauty of Querydsl: calling database functions]] 사용자 정의 함수 호출 기법
   * [[http://blog.mysema.com/2011/08/querydsl-in-wild.html|Mysema Blog: Querydsl in the wild]]   * [[http://blog.mysema.com/2011/08/querydsl-in-wild.html|Mysema Blog: Querydsl in the wild]]
 +  * [[https://examples.javacodegeeks.com/enterprise-java/spring/spring-querydsl-tutorial/|Spring Querydsl Tutorial]]
java/querydsl.txt · 마지막으로 수정됨: 2023/12/06 13:44 저자 kwon37xi