Подтвердить что ты не робот

Когда мы должны закрыть EntityManagerFactory?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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