Я также использую предположения entityManager.flush () и entityManager.clear ()
эта память будет освобождена при использовании clear ().
Ну, вы должны перестать гадать и начать читать какую-то документацию.
EntityManager
автоматически сбрасывает tx.commit()
, и менеджер сущностей очищается при его закрытии.
Если вы используете транзакции менеджера контейнеров, вам не следует беспокоиться о сбросе и очистке менеджеров сущностей. Если вы используете JavaSE, тогда ваш обычный рабочий процесс с БД должен выглядеть следующим образом:
- Создать новый менеджер сущностей
- Начать транзакцию
- Делай свою работу - удаляй / обновляй / вставляй что угодно
- Фиксация транзакции / откат при необходимости
- Закрыть менеджер сущностей
Обычно это будет закрыто в маленьком try-catch-finally
блоке
EntityManager
- это легкий и недолговечный компонент. Вы должны создать его именно тогда, когда вам это нужно, и закрыть его сразу после его использования.
То, что должно быть единичным экземпляром и создано (в большинстве случаев) только один раз, это EntityManagerFactory