2. Что такое EntityManager? Какие функции он выполняет?

2. Что такое EntityManager? Какие функции он выполняет?

UNKNOWN

EntityManager

Это интерфейс JPA, используемый для взаимодействия с персистентным контекстом. EntityManager описывает API для всех основных операций над Entity, а также для получения данных и других сущностей JPA. По сути - главный API для работы с JPA.

Персистентный контекст - это набор экземпляров сущностей, загруженных из БД или только что созданных. Персистентный контекст является своего рода кэшем данных в рамках транзакции - это и есть кэш первого уровня. Внутри контекста персистентности происходит управление экземплярами сущностей и их жизненным циклом.

EntityManager автоматически сохраняет в БД все изменения, сделанные в его персистентном контексте, в момент коммита транзакции, либо при явном вызове метода flush().

Один или несколько EntityManager образуют или могут образовать persistence context.

Если проводить аналогию с обычным JDBC, то EntityManagerFactory будет аналогом DataSource, а EntityManager аналогом Connection.

Создание EntityManagerFactory довольно дорогая операция, поэтому обычно её создают один раз и на всё приложение. А чаще всего не создают сами, а делегируют это фреймворку, такому как Spring, например Интерфейс Session из Hibernate представлен в JPA как раз интерфейсом EntityManager.

JPA

  1. EntityManagerFactory
  2. EntityManager
  3. JPQL

JDBC по аналогии

  1. DataSource
  2. Connection

Hibernate

  1. SessionFactory
  2. Session
  3. HQL

Основные функции EntityManager

  1. Операции над Entity: persist (добавление Entity под управление JPA), merge (изменение), remove (удаление), refresh (обновление данных), detach (удаление из-под управления контекста персистентности), lock (блокирование Entity от изменений в других thread).
  2. Получение данных: find (поиск и получение Entity), createQuery, createNamedQuery, createNativeQuery, contains, createNamedStoredProcedureQuery, createStoredProcedureQuery.
  3. Получение других сущностей JPA: getTransaction, getEntityManagerFactory getCriteriaBuilder, getMetamodel, getDelegate.
  4. Работа с EntityGraph: createEntityGraph, getEntityGraph.
  5. Общие операции над EntityManager или всеми Entities: close, isOpen, getProperties, setProperty, clear.
  6. Объекты EntityManager не являются потокобезопасными. Это означает, что каждый поток должен получить свой экземпляр EntityManager, поработать с ним и закрыть его в конце.

Предыдущий вопрос: 1. Что такое ORM? Что такое JPA? Что такое Hibernate?

Следующий вопрос: 3. Каким условиям должен удовлетворять класс, чтобы являться Entity?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page