Когда мы должны закрыть EntityManagerFactory? - PullRequest
26 голосов
/ 28 июля 2010

Я довольно новичок в ORM. Я только начинаю читать книги и документы о Java Persistence API с помощью Hibernate.

Мне просто интересно, закрытие EntityManagerFactory аналогично закрытию соединения с базой данных jdbc?

Должны ли мы закрывать его после каждого сохранения / обновления / удаления или нет? Если мы не закроем его, соединение с базой данных останется открытым?

1 Ответ

36 голосов
/ 28 июля 2010

Мне просто интересно, закрытие EntityManagerFactory похоже на закрытие соединения с базой данных jdbc?

Это не совсем так, но закрытие EntityManagerFactory будет ближе к уничтожению всего пула соединений. Если вы хотите думать о соединении JDBC, вам следует подумать EntityManager.

Должны ли мы закрывать его после каждого сохранения / обновления / удаления или нет?

Создание EntityManagerFactory является довольно дорогой операцией и должно выполняться один раз за время существования приложения (вы close делаете это в конце приложения). Таким образом, нет, вы не должны закрывать его для каждой операции сохранения / обновления / удаления.

EntityManagerFactory создается один раз для всех, и вы обычно получаете EntityManager на запрос, который закрывается в конце запроса (EntityManager на запрос - самый распространенный шаблон для многопользовательского клиента / серверное приложение).

Если мы не закроем его, соединение с базой данных останется открытым?

Как намекнул, это EntityManager, которое на самом деле связано с соединением с базой данных, и закрытие EntityManager фактически освободит соединение JDBC (чаще всего, вернет его в пул). *

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