我们非常高兴地宣布Hibernate ORM 6.0 Alpha4的发布。

6.0版本的主要设计目标是进一步提升Hibernate的吞吐性能。高负载性能测试显示,Hibernate通过从ResultSet按名称读取值的方式是其吞吐性能扩展的最限制因素。在基本层面,6.0主要是从旧的按名称读取策略转变为按位置读取。但这个简单的目标有很多后续影响。

我们已经取得了很大的进步,但仍然是一个Alpha版本,所以还有很多工作要做。

按键加载

现在所有按键加载操作都使用新的SQL AST和JdbcOperation方法执行。这包括:

  • 按id加载实体(Session#byIdSession#getSession#loadSession#lock等)

  • 按多个id加载实体(Session#byMultipleIds

  • 按自然键加载实体

  • 按唯一键加载实体

  • 获取集合

  • 初始化集合

除了查询支持外,所有加载操作现在都使用这种SQL AST方法。这包括所有获取策略,包括SELECT (N+1)、JOIN、BATCH、SUBSELECT。

避免渲染不必要的连接

当Hibernate知道它需要在from子句中引用一个实体时,它会为与该实体相关的所有表生成连接,包括任何连接的子类表和二级表。然而,有时并非所有这些表都需要渲染到SQL中。

在6.x版本之前解决这个问题非常困难,并且在不同情况下有所不同。无论如何,在5.x版本上已经进行了这项工作,包括在HHH-12895HHH-12993和其他任务上。

然而,6.0及其SQL AST使得以通用方式应用这一点变得更加容易。Alpha4提供了这一支持的基础工作。

@OrderBy支持

现在支持提供自定义@OrderBy SQL片段的映射和集合。

这是通过基于 Antlr v4 的语法来解析排序 SQL 片段并将指示的排序规范应用于正在构建的 SQL AST 来实现的。

更多信息

请参阅用户指南迁移指南

还可以查看发布页面

要取得联系,请使用在https://hibernate.com.cn/community/上讨论的常规渠道。


返回顶部