Ответ 1
Мне просто интересно, закрытие
EntityManagerFactory
похоже на закрытие соединения базы данных jdbc?
Это не совсем так, но закрытие EntityManagerFactory
будет ближе к уничтожению всего пула соединений. Если вы хотите думать о соединении JDBC, вы должны подумать EntityManager
.
Должны ли мы закрыть его после каждого сохранения/обновления/удаления или нет?
Создание EntityManagerFactory
является довольно дорогостоящей операцией и должно выполняться один раз для срока службы приложения (вы close
в конце приложения). Таким образом, нет, вы не должны закрывать его для каждой операции persist/update/delete.
EntityManagerFactory
создается один раз для всех, и обычно вы получаете EntityManager
за запрос, который закрыт в конце запроса (EntityManager
для каждого запроса является наиболее распространенным шаблоном для многопользовательского клиента/серверное приложение).
Если мы не закрываем его, будет ли соединение базы данных оставаться открытым?
Как было намечено, это EntityManager
, которое фактически связано с подключением базы данных a, и закрытие EntityManager
фактически освободит соединение JDBC (чаще всего возвращает его в пул).