2008-09-19 50 views
3

據我迄今發現的,我可以使用下面的代碼:如何在運行時爲使用Spring MVC和Hibernate的Web應用程序獲取jdbc.batch_size屬性的值?

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

但後來我得到一個Hibernate異常:

org.hibernate.HibernateException:中找不到本地數據源 配置 - 數據源屬性必須在 LocalSessionFactoryBean的設置

有人可以提供一些線索?

回答

3

試試下面的(我不能測試它,因爲我不使用Spring):

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

在我已經檢查了Hibernate的版本,getConfiguration不是的SessionFactory的公共方法。在一些絕望的情況下,我將Session或SessionFactory轉換爲其底層實現,以獲得一些不公開的值。在這種情況下,這將是:

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

當然,這是危險的,因爲如果他們改變實施可能會中斷。我通常只對優化進行這種操作,我可以不用這些優化,然後將所有內容包裝在try/catch Throwable塊中,以確保它在失敗時不會造成任何傷害。更好的想法可能是在初始化Hibernate時自己設置值,以便從頭開始就知道它是什麼。

+0

請注意,問題中的sessionFactory變量不是Hibernate的SessionFactory的實例;它是LocalSessionFactoryBean,它是一個Spring類。 – SamS 2008-09-20 06:50:29

相關問題