Согласно тому, что я нашел до сих пор, я могу использовать следующий код:
LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory");
System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize());
но затем я получаю исключение гибернации:
org.hibernate.HibernateException: No local DataSource found for configuration - dataSource property must be set on 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, чтобы вы уже знали, что это такое с самого начала.
Обратите внимание, что переменная sessionFactory в вопросе не является экземпляром SessionFactory Hibernate; это LocalSessionFactoryBean, который является классом Spring.