티스토리 뷰
이번에 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
으로 다 읽어버리는 것 만으로는 충분하지 않으니 꼭 다 쓴 자원을 반환하는 것을 권장합니다.
guava
dependency
제거guava
를 따로 추가해서 사용하시다가 충돌이 발생했던 경험이 있다면 이제는 걱정하실 필요 없습니다.
joda-time
dependency
제거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
에서NullsLast
ordering
제공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
- Java
- Spring Boot Tutorial
- spring boot application
- 함께 자라기
- spring boot app
- 스프링 데이터 jpa
- 헥사고날 아키텍처
- 스프링 부트 애플리케이션
- @ManyToOne
- spring boot jwt
- 스프링 부트 회원 가입
- 클린 아키텍처
- QueryDSL
- 스프링부트
- gRPC
- 함께 자라기 후기
- Spring Data JPA
- proto3
- 스프링 부트 튜토리얼
- intellij
- Spring Boot
- JSON
- 알고리즘
- Linux
- leetcode
- r
- Spring Boot JPA
- Jackson
- JPA
- 스프링 부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함