如何为单个会话启用hibernate.order_inserts属性

时间:2012-04-04 11:11:08

标签: hibernate

我将启用hibernate.order_inserts以改进我的批量插入操作 我可以看到,这是会话工厂级别的属性。但是,我认为对于我的应用程序所做的所有插入,这样的属性有点风险。

是否有为单个会话启用hibernate.order_inserts属性的选项?

1 个答案:

答案 0 :(得分:3)

在搜索hibernate源代码后,当SessionFactoryConfiguration.buildSessionFactory()构建时,SettingsFactory.buildSettings()将在内部调用,以将hibernate配置属性解析为Settings实例。 hibernate.order_inserts将大步进入Settings实例的orderInsertsEnabled属性。

然后Settings实例传递给SessionFactoryImpl的构造函数,SessionFactorysettings properties的一个实现,并将其分配给其内部settings property。此final声明为Settings,其值一旦设置就无法更改。

isOrderInsertsEnabled()orderInsertsEnabled属性通过getter ActionQueue.sortActions()向客户端公开。再次搜索代码,并确认只有一个地方(Settings)可以调用此{get} SessionFactoryImpl实例正好来自{{3}}

因此,我认为无论是在会话工厂级别还是会话级别,都无法在运行时更改hibernate.order_inserts。因此,您必须创建另一个会话工厂,并设置hibernate.order_inserts以实现您的目的。