Что такое сущность в JPA? - PullRequest
       36

Что такое сущность в JPA?

0 голосов
/ 16 сентября 2018

Кто-то спросил меня, что это за сущность?
К сожалению, я не знал правильного определения.

Сначала я ответил
Entity is just the class that related by Relational table.
Но я подумал, что это не весь смысл ..

И во-вторых, я ответил
Entity is the one that is managed by persistence context.

И тогда он спросил меня:
So.. The table that created by @ManyToMany relation is entity?

А потом я начал сбивать с толку.
Каково правильное значение права?

И, пожалуйста, ответьте о таблице, созданной вопросом @ManyToMany.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

В документе спецификации JPA (версия 2.2) все сказано на странице 23:

Сущность - это легкий объект постоянного домена .

По сути, Entity - это всего лишь маркер, который может сохранять определенный тип типа в некотором постоянном хранилище, обычно (реляционной) базе данных.Однако он не определяет, каким образом отношения с другими типами отображаются / выражаются в этой области.

В контексте ORM такие доменные объекты (т. Е. Экземпляры определенного типа в домене) сопоставляются со схемой базы данных, которая - в реляционных базах данных - выражается какнабор таблиц .

Для правильного отображения отношений n: m (@ManyToMany) могут потребоваться дополнительные структуры в хранилище постоянства, как правило,выражается в дополнительной таблице, например, TableA_TableB.Таким образом, нельзя утверждать, что сущность всегда точно соответствует одной таблице, в частности, когда необходимы связи с другими типами.

С точки зрения двунаправленности, таблицы в (реляционной) базе данныхне обязательно могут быть сопоставлены с типами доменов в том смысле, что они будут точно представлять тип домена.Или другими словами: кортежи / строки в реляционной таблице не обязательно соответствуют экземпляру (объекту) определенного типа .Для справки и дополнительной информации см. Теория нормализации базы данных Майка Хиллиера.

Надеюсь, что это поможет.

0 голосов
/ 16 сентября 2018

Посмотрите учебник Java EE :

https://docs.oracle.com/javaee/7/tutorial/persistence-intro001.htm#BNBQA

Там вы найдете определение:

7.1Сущности

Сущность является легковесным объектом домена постоянства.Как правило, объект представляет таблицу в реляционной базе данных, и каждый экземпляр объекта соответствует строке в этой таблице.Основным программным артефактом сущности является класс сущностей, хотя сущности могут использовать вспомогательные классы.

Или вы также можете взглянуть на спецификацию JPA :

http://download.oracle.com/otndocs/jcp/persistence-2_2-mrel-eval-spec/index.html

...