今天,我们发布了 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 );
获取 5.4.0.CR1
所有详细信息都可在hibernate.org上的专用页面找到,并保持最新。