2012-04-04 13 views
2

バッチ挿入操作を改善するためにhibernate.order_insertsを有効にします。
これはセッションファクトリレベルのプロパティです。しかし、私は、アプリケーションが行うすべての挿入に対して、このようなプロパティを少し危険にすることを検討します。

単一セッションでhibernate.order_insertsプロパティを有効にするオプションはありますか?単一セッションでhibernate.order_insertsプロパティを有効にする方法

答えて

2

SessionFactoryConfiguration.buildSessionFactory()によって構築された休止状態のソースコードを介して検索した後、SettingsFactory.buildSettings()SettingsインスタンスにHibernate設定プロパティを解析するために内部的に呼び出されます。 hibernate.order_insertsは、SettingsインスタンスのorderInsertsEnabledプロパティにストロークされます。

Settingsインスタンスは、SessionFactoryの実装であり、その内部settings propertiesに割り当てSessionFactoryImplのコンストラクタに渡されます。このsettings propertyは、finalと宣言されています。この値は、一度設定すると変更できません。

SettingsorderInsertsEnabledプロパティは、ゲッターisOrderInsertsEnabled()を介してクライアントに公開されます。再びコードを検索し、Settingsインスタンスが正確に結果SessionFactoryImpl

から取得され、このゲッターを呼び出すための唯一の場所(ActionQueue.sortActions())があることを確認し、私は中にhibernate.order_insertsを変更するには、いずれかのオプションが存在していないと思います実行時にセッションファクトリレベルまたはセッションレベルに関係なく実行されます。したがって、目的を達成するために有効に設定されたhibernate.order_insertsで別のセッションファクトリを作成する必要があります。

関連する問題