Wie bekomme ich den Wert der jdbc.batch_size Eigenschaft zur Laufzeit für eine Webanwendung Spring MVC verwenden und Ruhezustand?

StackOverflow https://stackoverflow.com/questions/105998

  •  01-07-2019
  •  | 
  •  

Frage

Nach dem, was ich bisher gefunden, kann ich den folgenden Code verwenden:

    LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory");
    System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize());

aber dann bekomme ich eine Hibernate Ausnahme:

  

org.hibernate.HibernateException: Keine lokalen Datasource gefunden   Konfiguration - Datasource-Eigenschaft muss festgelegt werden auf   LocalSessionFactoryBean

Kann jemand etwas Licht?

War es hilfreich?

Lösung

Versuchen Sie, die folgenden (ich kann es nicht testen, da ich Frühling nicht verwenden):

System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))

Andere Tipps

Bei den Versionen von Hibernate, die ich überprüft habe, ist getConfiguration noch keine öffentliche Methode der Session. In einigen verzweifelten Fällen habe ich eine Session oder Session in die zugrunde liegende Implementierung werfen auf einige Werte zu erhalten, die nicht öffentlich zugänglich waren. In diesem Fall wäre das:

((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()

Natürlich, das ist gefährlich, weil sie brechen könnten, wenn sie die Implementierung ändern. Normalerweise mache ich nur dies für Optimierungen, die ich ohne leben können, und dann wickeln Sie das Ganze in einem try / catch Throwable Block nur sicherstellen, dass es wird nichts schaden, wenn es fehlschlägt. Eine bessere Idee könnte sein, den Wert selbst einstellen, wenn Sie den Ruhezustand zu initialisieren, so dass Sie bereits wissen, was es von Anfang an ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top