4

根据我目前所发现的,我可以使用以下代码:

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

但后来我得到一个休眠异常:

org.hibernate.HibernateException:找不到用于配置的本地数据源 - 必须在 LocalSessionFactoryBean 上设置数据源属性

有人可以解释一下吗?

4

2 回答 2

4

在我检查过的 Hibernate 版本中,getConfiguration 不是 SessionFactory 的公共方法。在一些绝望的情况下,我将 Session 或 SessionFactory 强制转换为它的底层实现,以获取一些不公开的值。在这种情况下,这将是:

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

当然,这很危险,因为如果他们更改实现,它可能会中断。我通常只为我可以不用的优化而这样做,然后将整个东西包装在一个 try/catch Throwable 块中,以确保它在失败时不会伤害任何东西。一个更好的主意可能是在初始化 Hibernate 时自己设置该值,以便从一开始就知道它是什么。

于 2008-09-20T06:15:37.127 回答
3

尝试以下(我无法测试它,因为我不使用 Spring):

System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))
于 2008-09-19T22:34:55.550 回答