Подтвердить что ты не робот

Почему мы используем @Embeddable In Hibernate

Какое использование @Embedded и @Embeddable В спящем режиме? Поскольку каждый пример, который я нашел в Интернете, вставляет данные внутри одной таблицы и делает это, используя два разных класса. Я хочу сказать, что если я использую одну таблицу, я могу отобразить все столбцы внутри одного класса, тогда зачем мне использовать другой класс. и если мы используем две разные таблицы, то существует соотношение one-to-one и one-to-many спящего режима.

4b9b3361

Ответ 1

В Hibernate есть два типа объектов 1. Объект ценности
2. Объекты

Объекты Value - объекты, которые не могут стоять в одиночестве. Возьмите Address, например. Если вы скажете адрес, люди спросят, чей адрес это. Поэтому он не может стоять в одиночестве.

Объекты сущности - это те, кто может стоять в одиночестве, например College и Student.

Таким образом, в случае объектов с ценными данными предпочтительным способом является их внедрение в объект сущности.

Чтобы ответить, почему мы создаем два разных класса: во-первых, это концепция OOPS, которая должна иметь свободную связь и высокую степень сцепления между классами. Это означает, что вы должны создавать классы только для специализированных целей. Например, ваш класс Student должен иметь только информацию, связанную с Student.

Вторая точка заключается в том, что, создавая разные классы, вы продвигаете повторное использование.

Когда мы определяем объект value для класса сущности, мы используем @Embeddable.
Когда мы используем объект типа значения в классе сущности, мы используем @Embedded

Ответ 2

Предположим, у нас есть таблица сотрудников, аннотированная @entity, а сотрудник имеет адрес, поэтому здесь я не хочу создавать две таблицы, то есть сотрудник и адрес, я просто хочу создать только одну таблицу, то есть сотрудник, а не таблицу адресов, тогда нам нужно объявить экземпляр Address в Employee и добавить @embedable аннотация поверх класса Address, так что в итоге мы получаем таблицу employee с записями и адресами, а также в таблице с одним сотрудником

Ответ 3

Один объект может быть встроен в другой объект. Атрибуты объекта могут быть общими атрибутами более чем одного объекта. В этом случае может быть один внедряемый объект. И этот внедряемый объект может быть встроен в несколько объектов.

Рассмотрим пример. У нас есть один объект Animal, который имеет атрибуты name и location. Теперь два разных объекта Lion и Elephant могут иметь атрибуты Animal, просто вставляя объект Animal. Мы можем переопределить атрибуты. В объекте Animal присутствует атрибут location, а в Elephant присутствует атрибут place. Итак, с помощью @AttributeOverrides мы можем сделать, как показано ниже:

@AttributeOverrides({ @AttributeOverride(name = "location", column = @Column(name = "place")) })