Как замедлить создание SessionFactory после обновления Hibernate? - PullRequest
2 голосов
/ 05 мая 2010

В моем приложении Java SE я использовал Hibernate 3.3.2, а создание SessionFactory заняло около 5 секунд.

Сегодня я обновился до Hibernate 3.5.1, и внезапно это заняло больше минуты.

Что может быть причиной такого драматического эффекта?

Я пробовал разные вещи большую часть дня, и я понятия не имею ...

Некоторые данные, которые я собрал

  • Согласно профилировщику, наибольшее время затрачивается на PersisterFactory.createClassPersister, а в этом методе ProxyFactory.createClass занимает наибольшее время.
  • В журнале ничего необычного
  • Изменение hibernate.bytecode.use_reflection_optimizer не имеет значения

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Хорошо, это было абсолютно глупо и не имело никакого отношения к Hibernate, но я все равно отвечу на этот вопрос, потому что это может помешать другим делать те же ошибки.

  1. Создание SessionFactory в Hibernate 3.5 не медленнее.
  2. При создании SessionFactory существует тысячи вызовов методов для инициализации Hibernate.
  3. Кажется, что каждый из этих вызовов метода создает небольшие накладные расходы для профилировщика и отладчика. Также JIT-компилятор отключен во время отладки.
  4. В первый раз, когда я заметил медлительность, я пошагово проходил по коду, и все последующие тесты выполнялись с использованием профилировщика.
  5. Я только заметил это, потому что в отчаянии я просто запустил приложение, не намереваясь еще больше отследить проблему.
0 голосов
/ 07 мая 2010

Э-э, никогда не было Hibernate 3.4. Hibernate 3.3.2 был последним публичным выпуском перед Hibernate 3.5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...