Spring MVC と Hibernate を使用して Web アプリケーションの実行時に jdbc.batch_size プロパティの値を取得するにはどうすればよいですか?
質問
これまでに見つけたところによると、次のコードを使用できます。
LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory"); System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize());
しかし、その後、Hibernate Exception が発生します。
org.hibernate.HibernateException:構成のためにローカルデータソースが見つかりません-DataSourceプロパティはLocalSessionFactoryBeanに設定する必要があります
誰か光を当ててくれませんか?
解決
次のことを試してください (Spring を使用していないためテストできません)。
System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))
他のヒント
私が確認した Hibernate のバージョンでは、getConfiguration は SessionFactory のパブリック メソッドではありません。いくつかの絶望的なケースでは、Session または SessionFactory をその基礎となる実装にキャストして、公開されていない値を取得しました。この場合、それは次のようになります。
((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()
もちろん、実装を変更すると壊れる可能性があるため、これは危険です。私は通常、これを行わなくても問題ない最適化の場合にのみこれを実行し、失敗した場合に何も問題がないことを確認するために、全体を try/catch Throwable ブロックでラップします。Hibernate を初期化するときに値を自分で設定して、最初から値が何であるかを知っておくことをお勧めします。
所属していません StackOverflow