Spring MVC と Hibernate を使用して Web アプリケーションの実行時に jdbc.batch_size プロパティの値を取得するにはどうすればよいですか?

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

  •  01-07-2019
  •  | 
  •  

質問

これまでに見つけたところによると、次のコードを使用できます。

    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 を初期化するときに値を自分で設定して、最初から値が何であるかを知っておくことをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top