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