如何在运行时为使用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异常:

  

org.hibernate.HibernateException:找不到本地DataSource   配置 - 必须设置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