문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:querydsl [2017/06/20 11:01] kwon37xi |
java:querydsl [2023/12/06 13:44] (현재) kwon37xi [QueryDSL] |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== QueryDSL ====== | ====== QueryDSL ====== | ||
| * http:// | * http:// | ||
| + | * [[java: | ||
| + | * [[java: | ||
| * [[http:// | * [[http:// | ||
| * 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. | ||
| + | * [[java: | ||
| + | * [[https:// | ||
| + | |||
| + | ===== 프로젝트 이관 ===== | ||
| + | * 5.x 이후에 https:// | ||
| + | * 이로인해 '' | ||
| + | * https:// | ||
| ===== Q-Types multi thread loading 시 dead lock ===== | ===== Q-Types multi thread loading 시 dead lock ===== | ||
| 줄 10: | 줄 19: | ||
| ClassPathUtils.scanPackage(Thread.currentThread().getContextClassLoader(), | ClassPathUtils.scanPackage(Thread.currentThread().getContextClassLoader(), | ||
| </ | </ | ||
| + | |||
| ===== join 성능 향상 ===== | ===== join 성능 향상 ===== | ||
| * Join 시 그 결과로 나오는 관계 객체를 Eager Loading 하려면 '' | * Join 시 그 결과로 나오는 관계 객체를 Eager Loading 하려면 '' | ||
| 줄 33: | 줄 43: | ||
| .where(parent.something.gt(child.somthing))....; | .where(parent.something.gt(child.somthing))....; | ||
| </ | </ | ||
| + | |||
| + | ===== JPA Subquery & JPAExpressions ===== | ||
| + | * JPA Subquery 는 '' | ||
| + | * SELECT 에서 사용할 때는 '' | ||
| ===== Native 조건 condition ===== | ===== Native 조건 condition ===== | ||
| * [[http:// | * [[http:// | ||
| + | * JPA 사용시에는 해당 함수가 [[java: | ||
| <code java> | <code java> | ||
| // MySQL의 TIMESTAMPDIFF를 Expression으로 만들기 | // MySQL의 TIMESTAMPDIFF를 Expression으로 만들기 | ||
| 줄 51: | 줄 66: | ||
| } | } | ||
| </ | </ | ||
| + | * [[https:// | ||
| ===== 상수가 들어가는 표현식 ===== | ===== 상수가 들어가는 표현식 ===== | ||
| 줄 78: | 줄 94: | ||
| </ | </ | ||
| + | ===== Case/When ===== | ||
| + | * [[https:// | ||
| + | * '' | ||
| + | * '' | ||
| + | * 따라서, '' | ||
| + | |||
| + | <code java> | ||
| + | // registerDate 가 DATE 컬럼 일때 | ||
| + | // newRegisterDate 는 LocalDateTime.class | ||
| + | Expression< | ||
| + | .when(qUser.registerDate.eq(expectedRegisterDate)) | ||
| + | .then(qUser.registerDate) // DB 입장에서 DATE 컬럼 | ||
| + | .otherwise( | ||
| + | // DB 입장에서 DATE 인 ' | ||
| + | // 들어가기 때문에 어쩔 수 없이 문자로 모든 것을 넣어줌 | ||
| + | Expressions.dateTimeTemplate(LocalDateTime.class, | ||
| + | newDateTime.format(DateTimeFormatter.ofPattern(" | ||
| + | Expressions.constant(" | ||
| + | ); | ||
| + | </ | ||
| ===== @Embeddable의 필드 소스 생성 ===== | ===== @Embeddable의 필드 소스 생성 ===== | ||
| * Embeddable안에 또 다른 Embeddable이 있을 경우, 더 자식쪽 Embeddable의 경우 명시적 컬럼 매핑('' | * Embeddable안에 또 다른 Embeddable이 있을 경우, 더 자식쪽 Embeddable의 경우 명시적 컬럼 매핑('' | ||
| 줄 84: | 줄 120: | ||
| ==== Metamodel 생성 ==== | ==== Metamodel 생성 ==== | ||
| * [[gradle: | * [[gradle: | ||
| + | * [[gradle: | ||
| * Java 7에서 '' | * Java 7에서 '' | ||
| Caused by: java.lang.NullPointerException | Caused by: java.lang.NullPointerException | ||
| 줄 98: | 줄 135: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[https:// | ||