Java 对于使用SpringMVC和Hibernate的Web应用程序,如何在运行时获取jdbc.batch_size属性的值?

Java 对于使用SpringMVC和Hibernate的Web应用程序,如何在运行时获取jdbc.batch_size属性的值?,java,hibernate,spring,Java,Hibernate,Spring,根据我目前发现的情况,我可以使用以下代码: LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory"); System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize()); LocalSessi

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

LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory"); System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize()); LocalSessionFactoryBean sessionFactory=(LocalSessionFactoryBean)super.getApplicationContext().getBean(“&sessionFactory”); System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize()); 但是我得到了一个Hibernate异常:

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

有人能解释一下吗?

试试下面的方法(我不能测试它,因为我不使用Spring):


在我检查过的Hibernate版本中,getConfiguration不是SessionFactory的公共方法。在一些极端情况下,我将会话或SessionFactory转换到其底层实现中,以获取一些不公开的值。在这种情况下,这将是:

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

当然,这是危险的,因为如果他们更改实现,它可能会崩溃。我通常只做一些我可以不做的优化,然后将整个过程包装在一个try/catch-Throwable块中,以确保失败后不会造成任何伤害。更好的办法可能是在初始化Hibernate时自己设置值,以便从一开始就知道它是什么。

请注意,问题中的sessionFactory变量不是Hibernate的sessionFactory实例;它是LocalSessionFactoryBean的一部分,它是一个Spring类。
((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()