session.clear () необходим? - PullRequest
       1

session.clear () необходим?

2 голосов
/ 19 января 2012

Я использую Hibernate для всех задач, связанных с базой данных. Я использую класс HIbernateUTIl для поддержания соединений и делаю что-то вроде этого

Session session = null;
SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
session = sessionfactory.openSession();

в конце кода в блоке finally, который я делаю

session.close();

и после этого моя функция завершается, внутри функции я запускаю несколько запросов и получаю результат в массиве.

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

session.clear()

и если основной кеш не очищен, он будет содержать ссылки на мой объект, что сделает их недоступными для сборки мусора и, в конечном итоге, к потере памяти.

1 Ответ

1 голос
/ 19 января 2012

Нет, звонить session.clear() не обязательно.Закрытие сеанса также очищает его.

Очистка сеанса полезна, когда у вас есть длительные сеансы или когда выполняются пакетные обновления, которые хранят большое количество объектов в памяти, чтобы избежать ошибок или ошибок памяти.Но если вы оставляете сеанс открытым только во время обычной транзакции, очистка не требуется.

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