티스토리 뷰
이번에 5.0.0 버전이 release 되었는데 어떤 변경사항이 있었는지 살펴보겠습니다. 😀
먼저 가장 큰 변화는 자바 8버전 미만은 이제 지원하지 않는 것 인데요, 자바 7버전 이하를 사용하는 분들은 4.x.x 버전을 계속 사용해야 합니다.
그리고 joda-time과 google의 guava 런타임 dependency를 제외하였습니다.
이번 업데이트는 약 2년만에 이루어진 메이저 업데이트로 그동안 github에 남겨진 이슈 중 비중있는 것들 위주로 처리했다고 합니다.
큼지막 한 것들은 간단히 소개했으니 내부 기능 변화를 자세히 살펴보겠습니다.
새로운 기능들
Java 8소스 레벨을 대상으로 성능과 코드 개선Stream<T>를 반환하는Fetchable#stream()추가try-with-resources를 사용하여Stream을 항상close해주는 것을 권장하고 있습니다.- 단순히
forEach나collection으로 다 읽어버리는 것 만으로는 충분하지 않으니 꼭 다 쓴 자원을 반환하는 것을 권장합니다.
guavadependency제거guava를 따로 추가해서 사용하시다가 충돌이 발생했던 경험이 있다면 이제는 걱정하실 필요 없습니다.
joda-timedependency제거Java 8버전의java.time패키지에 이미 포함되어있어 제거하였습니다.
Document API를 통한MongoDB 4지원ECJ를 컴파일러로 사용하여com.querydsl.core.alias.Alias.*패키지가JRE에서 사용되도록 허용Jetbrains애너테이션을 위해 JSR305 교체JPA 2.1의Treated path expression을 생성하기위한JPAExpression#treat추가JPA에서 지원하지 않는 쿼리 기능을 사용할 때 좀 더 자세한 에러 메시지 표시querydsl-collections에서NullsLastordering제공querydsl-spatial에서JTS/Geolatte업그레이드HibernateDomainExporter및JPADomainExporter에서 공간 지원 사용 가능- 새로운
Jakarta EE릴리즈에 대한jakarta.*패키지 지원 nullif및 병합 메서드에서 형식화된 표현식을 반환- 코틀린 코드 제너레이터 지원
- 자바 레코드 지원
버그 수정
JPASQLQuery에서 카운트 쿼리 생성Alias.*의 동시성 문제를 수정(thread-safe)in-memory계산을 사용하여having절이 있는 쿼리에서AbstractJPAQuery#fetchResults및AbstractJPAQuery#fetchCount문제 해결in-memory계산을 사용하여 표현식 별로 여러 group by가 사용된 쿼리에서AbstractJPAQuery#fetchResults및AbstractJPAQuery#fetchCount문제 해결InsertClause의JPA구현 문제를 수정TemplateFactory에서 메모리 누수를 수정ExtendedBeanSerializer가toString메소드를 두 번 생성하는 것을 방지HQL의 레거시 위치 매개변수 대신JPA색인 매개변수 사용- 잘못된 인수 바인딩 인덱스로 생성된
JPA쿼리 수정 Hibernate사용자 정의 유형의 잘못된 매개 변수 수정JPQL생성에서 상수를 재사용하면Hibernate쿼리 캐싱 문제 발생하던 버그 수정
주요 변경 사항
- 최소 요구 사항: 자바 8버전
JavaSE6SQLExceptionWrapper와 자바 7 이전 버전 예외처리와 관련된 부분 삭제- 레거시 API의 이전 버전과의 호환성을 위해 있던 브리지 메서드를 제거
guava의존성 제거guava의 제거로 인해ImmutableList를 매개변수로 받은 모든 메서드는 이제 대신List사용- 기존에 사용하던
com.google.common.base.Function대신java.util.function.Function으로 제공해야 함
javax.inject.Provider를 사용하던 생성자는 이제java.util.function.Supplier를 대신 사용- 대부분의 경우 인수를
provider::get으로 바꿀 수 있음
- 대부분의 경우 인수를
- 이번
release는Hibernate 5.2를 대상으로 하므로Hibernate 4.x의dialect를 사용해야 하는 경우Hibernate5Templates대신HQLTemplates사용 - 다양한
deprecated메서드 제거 MDC의 키를 구분할 때 점(.) 대신 언더스코어(_) 사용- querydsl.query -> querydsl_query
geolatte-geom업그레이드로 인해querydsl-spatial및querydsl-sql-spatial에서PolyHedralSurface제거com.querydsl.apt.Extension이com.querydsl.codegen으로 이동되었으며 이제querydsl-codegen모듈에 존재com.querydsl.apt.SpatialSupport가com.querydsl.spatial.apt.SpatialSupport로 이동되었으며 이제querydsl-spatial모듈에 존재com.querydsl.sql.codegen.SpatialSupport는com.querydsl.sql.spatial.SpatialSupport로 이동되었으며 이제querydsl-sql-spatial모듈에 존재querydsl-sql-spatial의SQLServerGeometryReader는org.geolatte.geom.codec.db.sqlserver.*를 위해 제거querydsl-sql-spatial의PGgeometryConverter는org.geolatte.geom.codec.Wkt를 위해 제거querydsl-sql-spatial의JGeometryConverter는org.geolatte.geom.codec.db.oracle.*을 위해 제거querysql-jpa-codegen에서HibernateDomainExporter제거HibernateDomainExporter는Hibernate 4버전만 지원하므로JPADomainExporter사용ComparableExpression#coalesce(및 subtypes)는 더 이상mutable Coalesce expression을 반환하지 않고typed expression을 반환Coalesce Builder가 필요한 경우 대신new Coalesce<T>().add(expression)를 사용
OSGi데이터는 더 이상 매니페스트에 포함되지 않음
사용 중단 (Deprecations)
AbstractJPAQuery#fetchResults및AbstractJPAQuery#fetchCount는 이제 여러group by가 존재하는 쿼리에 대해 더 이상 사용되지 않음- 순수
JPA에서 지원할 수 없고 대신 메모리 내에서 계산되기 때문 totalCount가 필요하지 않은 경우 항상AbstractJPAQuery#fetch를 대신 사용- 복잡한 쿼리 내에서도 페이징 사용을 원한다면
Blaze-Persistence QueryDSL integration사용
- 순수
getConstantToLabel사용 중단
'Querydsl' 카테고리의 다른 글
| 스프링 부트 2.6 이상에서 Querydsl 5.0 사용시 주의할 점 (0) | 2022.08.24 |
|---|---|
| 스프링부트 2.6 이상 버전에서 Querydsl 설정 방법 (0) | 2022.08.23 |
| [Querydsl] 스프링 데이터가 지원하는 기능 (0) | 2021.07.27 |
| [Querydsl] Spring Data JPA와 같이 사용하기 (0) | 2021.07.26 |
| [Querydsl] SQL 함수 사용하기 (0) | 2021.07.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- proto3
- intellij
- Spring Boot
- 함께 자라기 후기
- Spring Boot JPA
- 스프링 부트 튜토리얼
- 스프링 부트
- r
- 스프링부트
- 스프링 부트 회원 가입
- Linux
- 스프링 데이터 jpa
- Spring Boot Tutorial
- spring boot application
- Java
- 함께 자라기
- spring boot jwt
- JSON
- 클린 아키텍처
- 알고리즘
- 스프링 부트 애플리케이션
- leetcode
- JPA
- 헥사고날 아키텍처
- QueryDSL
- Jackson
- Spring Data JPA
- gRPC
- spring boot app
- @ManyToOne
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
