2

hibernate.order_insertsバッチ挿入操作を改善するために有効にします。
ご覧のとおり、これはセッションファクトリレベルのプロパティです。ただし、このようなプロパティを有効にすると、アプリケーションが行うすべての挿入に対して少しリスクが高くなると思います。単一セッションのプロパティ

を有効にするオプションはありますか?hibernate.order_inserts

4

1 に答える 1

3

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

次に、Settingsインスタンスは、 SessionFactoryの実装であるSessionFactoryImplのコンストラクターに渡され、その内部設定プロパティに割り当てられます。この設定プロパティはfinalとして宣言されており、一度設定すると値を変更できません。

SettingsorderInsertsEnabledプロパティは、ゲッターisOrderInsertsEnabled()を介してクライアントに公開されます。コードを再度検索し、 SettingsインスタンスがSessionFactoryImplから正確に取得するこのゲッターを呼び出す場所が1つしかないことを確認します(ActionQueue.sortActions() )。

hibernate.order_inserts結果として、セッションファクトリレベルまたはセッションレベルに関係なく、実行時に変更するオプションはないと思います。hibernate.order_insertsしたがって、目的を達成できるように、セットを使用して別のセッションファクトリを作成する必要があります。

于 2012-04-04T14:19:08.047 に答える