Что такое EntityManager от JPA? - PullRequest
       134

Что такое EntityManager от JPA?

2 голосов
/ 06 августа 2020

Oracle Документация объясняет javax.persistence.EntityManager через концепцию «контекста постоянства».

Интерфейс, используемый для взаимодействия с контекстом постоянства.

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

Есть ли более простое вводное объяснение для людей, которые плохо знакомы с миром JPA?

Обновление: ответы, которые я получил, невероятно полезны, но повторяющаяся проблема, которую я имею (и некоторые другие тоже могут), заключается в том, что концепции JPA объясняются через отношения с другими концепциями JPA. Было бы очень поучительно познакомиться с EntityManager с точки зрения агности c экосистемы JPA, скажем, как если бы человек пришел с опытом работы в других ORM (например, Entity Framework или SQL Alchemy).

1 Ответ

3 голосов
/ 06 августа 2020

Вы можете перефразировать это так:

Набор экземпляров управляемого объекта в одном и том же Entity Manager в любой момент времени называется его контекстом постоянства.

И только один Java экземпляр в пределах одна и та же идентичность постоянства может существовать в контексте постоянства в любой момент времени.

Если вы поместите это на диаграмму отношений, это будет выглядеть примерно так:

Persistence
     | 1 
     | creates
     | *
EntityManagerFactory
     | 1
     | creates
     | *
EntityManager
     | * 
     | manages
     | 1
PersistenceContext

Также EntityManager и его связанные PersistenceContext - это так называемый кеш первого уровня. Кешем второго уровня будет управлять EntityManagerFactory.

...