Java 对于使用SpringMVC和Hibernate的Web应用程序,如何在运行时获取jdbc.batch_size属性的值?
根据我目前发现的情况,我可以使用以下代码: 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):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
在我检查过的Hibernate版本中,getConfiguration不是SessionFactory的公共方法。在一些极端情况下,我将会话或SessionFactory转换到其底层实现中,以获取一些不公开的值。在这种情况下,这将是:
((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()
当然,这是危险的,因为如果他们更改实现,它可能会崩溃。我通常只做一些我可以不做的优化,然后将整个过程包装在一个try/catch-Throwable块中,以确保失败后不会造成任何伤害。更好的办法可能是在初始化Hibernate时自己设置值,以便从一开始就知道它是什么。请注意,问题中的sessionFactory变量不是Hibernate的sessionFactory实例;它是LocalSessionFactoryBean的一部分,它是一个Spring类。
((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()