2

我将启用hibernate.order_inserts以改进我的批量插入操作。
正如我所看到的,这是会话工厂级别的属性。但是,我认为为我的应用程序所做的所有插入启用此类属性有点冒险。是否有为单个会话

启用属性的选项?hibernate.order_inserts

4

1 回答 1

3

翻遍hibernate源码,当通过Configuration.buildSessionFactory()构建SessionFactory时 ,内部会调用SettingsFactory.buildSettings() 将hibernate配置属性解析到Settings实例中。将大步进入Settings实例的属性。hibernate.order_insertsorderInsertsEnabled

然后将Settings实例传递给 SessionFactoryImpl 的构造函数,该构造函数是SessionFactory实现,并将其分配给其内部设置属性。此设置属性被声明为最终属性,其值一旦设置就无法更改。

SettingsorderInsertsEnabled属性通过 getter isOrderInsertsEnabled()暴露给客户端。再次搜索代码并确认只有一个地方(ActionQueue.sortActions())可以调用此 getter,而Settings实例正是从SessionFactoryImpl中获取的

因此,我认为hibernate.order_inserts在运行时没有任何选项可以更改,无论是在会话工厂级别还是会话级别。因此,您必须使用hibernate.order_insertsset 创建另一个会话工厂以启用以实现您的目的。

于 2012-04-04T14:19:08.047 回答