53

我刚刚看到 Hibernate 5 发布了第 4 个候选版本。与早期版本相比,Hibernate 5 有什么新功能?

4

2 回答 2

46

在 Hibernate 5.x 中添加/增强了一些令人兴奋的功能。快速浏览一下。

1. 休眠搜索

Hibernate Search 透明地索引您的对象并提供快速的常规、全文和地理位置搜索。易于使用和易于集群是核心。

  • 实体的全文搜索 -近似查找(模糊搜索)
  • 集群友好 -提供几种易于设置的集群策略
  • 分面和地理定位 - 地理定位实体就像@Spatial 一样简单

有关 Hibernate Search 的更多详细信息,请查看此内容。

2.休眠验证器

Hibernate Validator 带有一些内置的验证规则,如电子邮件、长度、NotBlank 等。

使用基于注释的约束以标准化的方式表达验证规则,并从与各种框架的透明集成中受益。

有关 Hibernate Validator 的更多详细信息,请查看此内容。

3. 改进的 Java 8 支持

支持 Java 8 日期/时间数据类型 (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 扩展进行扩展。
  • 此外,对 AttributeConverters 的支持已得到扩展并更充分地实现

查看Hibernate ORM 路线图以获取更多详细信息。

于 2015-08-12T21:26:10.897 回答
45

在 Hibernate 5 中,有一长串发生了变化的事情:

  1. 一个新的引导 API,因此我们可以在不需要persistence.xml文件的情况下以编程方式引导 JPA 环境。

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

  3. 域模型映射支持Java 8 日期和时间类型。标准 SQL 日期/时间类型与支持的 Java 8 日期/时间类类型之间的映射如下所示;

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

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

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

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

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

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

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

  8. 从 Hibernate 5.0 开始,我们有一个从头开始编写的全新用户指南。

Hibernate 5.1增加了以下特性:

  1. 您现在可以在 JPQL 和 HQL 查询中加入不相关的实体
  2. 按标识符加载多实体

Hibernate 5.2增加了对:

  1. Java 1.8,所以你现在可以使用Query.stream()
  2. HibernateSession扩展EntityManager,因此您可以直接从Session
  3. 支持 JCache
  4. 会话级批量大小
  5. 全球时区设置(例如 UTC)TimestampTime
  6. 不同的传递提示
  7. 更高效的 JPQL 和 HQL 解析常量值
  8. hibernate.connection.provider_disables_autocommit资源本地事务优化。
  9. 更好地处理 Criteria API 文字
于 2016-02-16T08:22:32.583 回答