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 中有一长串更改:

  1. 一个新的 bootstrap API 这样我们就可以 bootstrap a JPA environment programmatically without the need of a persistence.xml file.

  2. 从 5.0 开始,Hibernate Spatial 是 Hibernate 项目的一部分,因此我们也可以处理 GIS 数据。

  3. 域模型映射支持 Java 8 Date and Time types。标准 SQL Date/Time 类型和支持的 Java 8 Date/Time class 类型之间的映射如下所示;

    • 日期:java.time.LocalDate
    • 时间:java.time.LocalTimejava.time.OffsetTime
    • 时间戳:java.time.Instantjava.time.LocalDateTimejava.time.OffsetDateTimejava.time.ZonedDateTime
  4. 字节码增强机制从头开始重新设计,Hibernate 具有 Maven 和 Gradle 插件。我们可以通过字节码检测增强三个主要方面:

    • 惰性初始化:字段可以声明为LAZY,只有在第一次访问时才获取。

    • 脏检查:实体得到增强,因此它们可以跟踪在持久性上下文中加载后发生更改的所有属性。

    • 双向关联:可以自动同步双向关联的两边,即使开发人员只更新单边。

  5. Hibernate 的原生 APIs(Session 等)已更新为使用泛型类型。获取实体时无需转换。

  6. Hibernate 5.0 将其扩展到更广泛的类型集(例如 UUID)。

  7. 二级缓存引用。此功能允许将实体引用直接存储到不可变实体的二级缓存中。

  8. 从 Hibernate 5.0 开始,我们有一个完全 new User Guide 从头开始​​编写的。

Hibernate 5.1 添加了以下功能:

  1. You can now join unrelated entities in JPQL and HQL queries
  2. Multi-entity load by identififer

Hibernate 5.2 添加了对:

的支持
  1. Java1.8,所以you can now use Query.stream()
  2. Hibernate Session 扩展了 EntityManager,因此您可以直接从 Session
  3. 访问所有 J​​PA 方法
  4. 支持 JCache
  5. Session-level batch size
  6. Global timezone setting (e.g. UTC) for Timestamp and Time
  7. Distinct pass-through hint
  8. More efficient JPQL and HQL parsing of constant values
  9. hibernate.connection.provider_disables_autocommit resource-local transaction optimization.
  10. Better handling of Criteria API literals.