Как получить значение свойства jdbc.batch_size во время выполнения для веб-приложения, использующего Spring MVC и Hibernate? - PullRequest
3 голосов
/ 20 сентября 2008

Согласно тому, что я нашел, я могу использовать следующий код:

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

но затем я получаю исключение Hibernate:

org.hibernate.HibernateException: локальный источник данных не найден для конфигурация - свойство dataSource должно быть установлено на LocalSessionFactoryBean

Может кто-нибудь пролить свет?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2008

В версиях Hibernate, которые я проверял, getConfiguration не является публичным методом SessionFactory. В нескольких отчаянных случаях я привел Session или SessionFactory в их базовую реализацию, чтобы получить некоторые значения, которые не были публично доступны. В этом случае это будет:

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

Конечно, это опасно, потому что оно может сломаться, если они изменят реализацию. Я обычно делаю это только для оптимизаций, без которых я могу жить, а затем оборачиваю все это в блок Throwable try / catch, чтобы убедиться, что он ничего не повредит, если он потерпит неудачу. Лучшей идеей может быть установка значения самостоятельно при инициализации Hibernate, чтобы вы уже знали, что это такое с самого начала.

3 голосов
/ 20 сентября 2008

Попробуйте следующее (я не могу проверить это, так как я не использую Spring):

System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...