我们非常高兴地宣布Hibernate ORM 6.0 Alpha4的发布。
6.0版本的主要设计目标是进一步提升Hibernate的吞吐性能。高负载性能测试显示,Hibernate通过从ResultSet按名称读取值的方式是其吞吐性能扩展的最限制因素。在基本层面,6.0主要是从旧的按名称读取策略转变为按位置读取。但这个简单的目标有很多后续影响。
我们已经取得了很大的进步,但仍然是一个Alpha版本,所以还有很多工作要做。
按键加载
现在所有按键加载操作都使用新的SQL AST和JdbcOperation方法执行。这包括:
-
按id加载实体(
Session#byId
、Session#get
、Session#load
、Session#lock
等) -
按多个id加载实体(
Session#byMultipleIds
) -
按自然键加载实体
-
按唯一键加载实体
-
获取集合
-
初始化集合
除了查询支持外,所有加载操作现在都使用这种SQL AST方法。这包括所有获取策略,包括SELECT (N+1)、JOIN、BATCH、SUBSELECT。
@OrderBy
支持
现在支持提供自定义@OrderBy
SQL片段的映射和集合。
这是通过基于 Antlr v4 的语法来解析排序 SQL 片段并将指示的排序规范应用于正在构建的 SQL AST 来实现的。