Вы можете включить статистику Hibernate для просмотра количества открытых и закрытых сессий: hibernateConfiguration.setProperty(Environment.GENERATE_STATISTICS, "true")
Затем используйте SessionFactory.getStatistics()
для просмотра открытых и закрытых сессий. Это должно сказать вам, если вы пропускаете сеансы.
Еще одной проблемой является выяснение источника утечки. Я сделал это, централизовав весь код для получения сеанса, а затем сохраняя трассировку стека при каждом открытом сеансе (по потокам) и удаляя его после закрытия сеанса. Периодически смотрите на список открытых сессий, и те, которые остались, являются пропущенными. Инструменты профилирования могут упростить эту задачу, если вы сможете воспроизвести утечку в контролируемой среде.