2012-04-04 11 views
2

Ich werde hibernate.order_inserts aktivieren, um meine Batch-Einfügeoperationen zu verbessern.
Wie ich sehen kann, ist dies eine Eigenschaft der Session-Factory-Ebene. Ich erwäge jedoch, diese Eigenschaft für alle Einsätze, die meine Anwendung ausführt, ein wenig riskant zu machen.

Gibt es eine Option, um die Eigenschaft hibernate.order_inserts für eine einzelne Sitzung zu aktivieren?Wie Sie die Eigenschaft hibernate.order_inserts für eine einzelne Sitzung aktivieren

Antwort

2

nachdem es durch den Ruhezustand Quellcodes der Suche, wenn die durch SessionFactoryConfiguration.buildSessionFactory() gebaut wird, wird intern SettingsFactory.buildSettings() die Ruhekonfigurationseigenschaften in die Settings Instanz parsen aufgerufen werden. Die hibernate.order_inserts wird in die orderInsertsEnabled Eigenschaft der Settings Instanz streichen.

Die Settings Instanz übergeben dann an den Konstruktor der SessionFactoryImpl die eine Implementierung des SessionFactory ist, und weisen sie ihren internen settings properties. Dieser settings property wird als final deklariert, dessen Wert nicht geändert werden kann, sobald er eingestellt ist.

Die orderInsertsEnabled Eigenschaft des Settings ist dem Client über den Getter isOrderInsertsEnabled() ausgesetzt. Suchen Sie den Code erneut ein und bestätigen Sie, dass es nur einen Ort (ActionQueue.sortActions()) ist dieses Getter zu nennen, die die Settings Instanz genau aus dem SessionFactoryImpl

Als Ergebnis erhalten wird, glaube ich nicht, es Möglichkeiten zu ändern hibernate.order_inserts während unabhängig davon, ob es sich um die Session-Factory-Ebene oder die Session-Ebene handelt. Sie müssen also eine andere Sitzungsfabrik mit hibernate.order_inserts erstellen, um Ihren Zweck zu erfüllen.

Verwandte Themen