Hibernate ORM 5 有什么新功能?
What's new in Hibernate ORM 5?
我刚刚看到 Hibernate 5 的第 4 个候选版本发布了。与早期版本相比,Hibernate 5 有哪些新功能?
Hibernate 5.x 中已经 added/enhanced 了一些令人兴奋的功能。快速浏览一下。
1。休眠搜索
Hibernate Search transparently indexes your objects and offers fast regular, full-text and geolocation search. Ease of use and easy clustering are core.
- 实体的全文搜索 - 通过近似查找(模糊搜索)
- 集群友好 - 提供多种易于设置的集群策略
- 分面和地理定位 - 地理定位实体与@Spatial 一样简单
For more details on Hibernate Search view this.
2。休眠验证器
Hibernate Validator 带有一些内置的验证规则,如电子邮件、长度、非空白等。
Express validation rules in a standardized way using annotation-based constraints and benefit from transparent integration with a wide variety of frameworks.
For more details on Hibernate Validator view this.
3。改进 Java 8 支持
Java 8 date/time 数据类型 (JSR 310) 受支持,并且可以通过 @Past 和 @Future 进行验证。还通过改进的 ValidatedValueUnwrapper 支持 Optional 和 JavaFX 类型。
4。休眠 OGM
刚刚发布了第一个稳定版本。
5。自举 API
新引导API - 更好的确定性,更好的集成
其他一些事情:
- 非 JPA 用法的扫描支持
- NamingStrategy 已被移除,取而代之的是更好的设计 API
- 能够为标记为 GenerationType#AUTO 的 id 属性处理其他 Java 类型。内置支持 Number 和 UUID。可通过新的 org.hibernate.boot.model.IdGeneratorStrategyInterpreter 扩展进行扩展。
- 此外,对 AttributeConverter 的支持得到了扩展并得到了更充分的实现
查看 Hibernate ORM Roadmap 了解更多详情。
在 Hibernate 5 中有一长串更改:
一个新的 bootstrap API 这样我们就可以 bootstrap a JPA environment programmatically without the need of a persistence.xml
file.
从 5.0 开始,Hibernate Spatial 是 Hibernate 项目的一部分,因此我们也可以处理 GIS 数据。
域模型映射支持 Java 8 Date and Time types。标准 SQL Date/Time 类型和支持的 Java 8 Date/Time class 类型之间的映射如下所示;
- 日期:
java.time.LocalDate
- 时间:
java.time.LocalTime
、java.time.OffsetTime
- 时间戳:
java.time.Instant
、java.time.LocalDateTime
、java.time.OffsetDateTime
和 java.time.ZonedDateTime
字节码增强机制从头开始重新设计,Hibernate 具有 Maven 和 Gradle 插件。我们可以通过字节码检测增强三个主要方面:
惰性初始化:字段可以声明为LAZY
,只有在第一次访问时才获取。
脏检查:实体得到增强,因此它们可以跟踪在持久性上下文中加载后发生更改的所有属性。
双向关联:可以自动同步双向关联的两边,即使开发人员只更新单边。
Hibernate 的原生 APIs(Session
等)已更新为使用泛型类型。获取实体时无需转换。
Hibernate 5.0 将其扩展到更广泛的类型集(例如 UUID
)。
二级缓存引用。此功能允许将实体引用直接存储到不可变实体的二级缓存中。
从 Hibernate 5.0 开始,我们有一个完全 new User Guide 从头开始编写的。
Hibernate 5.1 添加了以下功能:
Hibernate 5.2 添加了对:
的支持
- Java1.8,所以you can now use
Query.stream()
- Hibernate
Session
扩展了 EntityManager
,因此您可以直接从 Session
访问所有 JPA 方法
- 支持 JCache
- Session-level batch size
- Global timezone setting (e.g. UTC) for
Timestamp
and Time
- Distinct pass-through hint
- More efficient JPQL and HQL parsing of constant values
hibernate.connection.provider_disables_autocommit
resource-local transaction optimization.
- Better handling of Criteria API literals.
我刚刚看到 Hibernate 5 的第 4 个候选版本发布了。与早期版本相比,Hibernate 5 有哪些新功能?
Hibernate 5.x 中已经 added/enhanced 了一些令人兴奋的功能。快速浏览一下。
1。休眠搜索
Hibernate Search transparently indexes your objects and offers fast regular, full-text and geolocation search. Ease of use and easy clustering are core.
- 实体的全文搜索 - 通过近似查找(模糊搜索)
- 集群友好 - 提供多种易于设置的集群策略
- 分面和地理定位 - 地理定位实体与@Spatial 一样简单
For more details on Hibernate Search view this.
2。休眠验证器
Hibernate Validator 带有一些内置的验证规则,如电子邮件、长度、非空白等。
Express validation rules in a standardized way using annotation-based constraints and benefit from transparent integration with a wide variety of frameworks.
For more details on Hibernate Validator view this.
3。改进 Java 8 支持
Java 8 date/time 数据类型 (JSR 310) 受支持,并且可以通过 @Past 和 @Future 进行验证。还通过改进的 ValidatedValueUnwrapper 支持 Optional 和 JavaFX 类型。
4。休眠 OGM
刚刚发布了第一个稳定版本。
5。自举 API
新引导API - 更好的确定性,更好的集成
其他一些事情:
- 非 JPA 用法的扫描支持
- NamingStrategy 已被移除,取而代之的是更好的设计 API
- 能够为标记为 GenerationType#AUTO 的 id 属性处理其他 Java 类型。内置支持 Number 和 UUID。可通过新的 org.hibernate.boot.model.IdGeneratorStrategyInterpreter 扩展进行扩展。
- 此外,对 AttributeConverter 的支持得到了扩展并得到了更充分的实现
查看 Hibernate ORM Roadmap 了解更多详情。
在 Hibernate 5 中有一长串更改:
一个新的 bootstrap API 这样我们就可以 bootstrap a JPA environment programmatically without the need of a
persistence.xml
file.从 5.0 开始,Hibernate Spatial 是 Hibernate 项目的一部分,因此我们也可以处理 GIS 数据。
域模型映射支持 Java 8 Date and Time types。标准 SQL Date/Time 类型和支持的 Java 8 Date/Time class 类型之间的映射如下所示;
- 日期:
java.time.LocalDate
- 时间:
java.time.LocalTime
、java.time.OffsetTime
- 时间戳:
java.time.Instant
、java.time.LocalDateTime
、java.time.OffsetDateTime
和java.time.ZonedDateTime
- 日期:
字节码增强机制从头开始重新设计,Hibernate 具有 Maven 和 Gradle 插件。我们可以通过字节码检测增强三个主要方面:
惰性初始化:字段可以声明为
LAZY
,只有在第一次访问时才获取。脏检查:实体得到增强,因此它们可以跟踪在持久性上下文中加载后发生更改的所有属性。
双向关联:可以自动同步双向关联的两边,即使开发人员只更新单边。
Hibernate 的原生 APIs(
Session
等)已更新为使用泛型类型。获取实体时无需转换。Hibernate 5.0 将其扩展到更广泛的类型集(例如
UUID
)。二级缓存引用。此功能允许将实体引用直接存储到不可变实体的二级缓存中。
从 Hibernate 5.0 开始,我们有一个完全 new User Guide 从头开始编写的。
Hibernate 5.1 添加了以下功能:
Hibernate 5.2 添加了对:
的支持- Java1.8,所以you can now use
Query.stream()
- Hibernate
Session
扩展了EntityManager
,因此您可以直接从Session
访问所有 JPA 方法
- 支持 JCache
- Session-level batch size
- Global timezone setting (e.g. UTC) for
Timestamp
andTime
- Distinct pass-through hint
- More efficient JPQL and HQL parsing of constant values
hibernate.connection.provider_disables_autocommit
resource-local transaction optimization.- Better handling of Criteria API literals.