根据我到目前为止所发现的,我可以使用以下代码:
LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory"); System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize());
然后我得到一个Hibernate异常:
org.hibernate.HibernateException:找不到本地DataSource 配置 - 必须设置dataSource属性 LocalSessionFactoryBean的
有人可以解释一下吗?
答案 0 :(得分:3)
尝试以下(因为我不使用Spring,所以无法测试):
System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))
答案 1 :(得分:3)
在我检查过的Hibernate版本中,getConfiguration不是SessionFactory的公共方法。在一些绝望的情况下,我将Session或SessionFactory转换为其底层实现,以获得一些不公开的值。在这种情况下,将是:
((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()
当然,这很危险,因为如果改变实施可能会破坏。我通常只做这个我可以没有的优化,然后将整个东西包装在try / catch Throwable块中,以确保它不会伤害任何东西,如果它失败了。一个更好的想法可能是在初始化Hibernate时自己设置值,这样你就可以从一开始就知道它是什么。