今天,我们发布了 Hibernate ORM 5.4.0 的第一个候选版本。

5.4 是 5.3 的直接延续,您应该计划升级以便在最终版本发布后尽快获得新的修复。

请考虑测试此候选版本,以便升级尽可能顺利。

新增功能

EntityGraph 改进

JPA 的 EntityGraph 功能定义和使用起来比较繁琐。Hibernate ORM 5.4 增加了 2 个新功能来帮助更容易地处理 EntityGraph。

请注意,所有这些改进都视为孵化中的。

EntityGraph 解析

第一个功能是从字符串表示形式创建图的能力。例如,对于一个 Person 实体,我们可能想要确保 Person 的配偶会被懒加载。

final EntityGraph eg = org.hibernate.graph.EntityGraphs.parse( Person.class, "spouse", entityManager );

final Person personAndSpouse = entityManager.find( Person.class, 1,
    Collections.singletonMap( "javax.persistence.fetchgraph", eg );

此解析支持 EntityGraph 创建的所有功能,包括子图(尽管请参阅第二个功能)和子类图。请参阅文档以获取深入讨论和示例。

EntityGraph 操作

这主要关于组合图。例如。

final EntityGraph eg1 = org.hibernate.graph.EntityGraphs.parse( Person.class, "spouse", entityManager );
final EntityGraph eg2 = org.hibernate.graph.EntityGraphs.parse( Person.class, "spouse(age, dob)", entityManager );
final EntityGraph combinedGraph = org.hibernate.graph.EntityGraphs.merge( entityManager, Person.class, eg1, eg2 )

final Person personAndSpouse = entityManager.find( Person.class, 1,
    Collections.singletonMap( "javax.persistence.fetchgraph", combinedGraph );

这是一个非常简单的示例,仅用于说明。实际上,它可以更简单地定义为

final EntityGraph combinedGraph = org.hibernate.graph.EntityGraphs.parse( Person.class, "spouse( age, dob )", entityManager );

final Person personAndSpouse = entityManager.find( Person.class, 1,
    Collections.singletonMap( "javax.persistence.fetchgraph", combinedGraph );

JDK 11 支持

5.4.0 将默认支持 JDK 11,例如不需要额外的依赖项或环境变量,如 5.3 所需。

错误修复和微小改进

此版本包含大量错误修复和微小改进。

您可以在这里(或对于没有 Hibernate Jira 账户的人,这里)找到完整的更改列表。

获取 5.4.0.CR1

所有详细信息都可在hibernate.org上的专用页面找到,并保持最新。

接下来是什么?

我们将很快发布5.4.0.Final,之后将发布定期维护版本。

反馈、问题、想法?

请使用常规渠道联系


回到顶部