Почему вы не закрываете сеанс после завершения операции с базой данных?Я имею в виду, что в классах DAO вы получаете открытую сессию и выполняете операции с базой данных.И, наконец, блок, закройте сеанс.Вы можете закрыть сессию, например:
finally {
if(session!=null){
session.close();
}
}
ИЛИ
Вы можете получить текущую сессию, используя
Session sess = sessionFactory.getCurrentSession();
И закрыть сессию при закрытии события JFrame.
Я получаю следующие строки от этой ссылки
Основным контрактом здесь является создание экземпляров Session.Обычно приложение имеет единственный экземпляр SessionFactory, и потоки, обслуживающие клиентские запросы, получают экземпляры Session из этой фабрики.Внутреннее состояние SessionFactory является неизменным.Как только он создан, это внутреннее состояние устанавливается.Это внутреннее состояние включает в себя все метаданные об объектно-реляционном сопоставлении.Реализаторы должны быть ориентированы на многопоточность.
И наша обязанность - закрыть сеанс после завершения операции или транзакции.Когда мы закрываем сеанс, все ресурсы (пулы соединений и т. Д.) Освобождаются должным образом.