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

Спящий режим: разница между методом встроенной аннотации и методом аннотации @OneToOne

В чем разница между методикой аннотации @Embedded и техникой аннотации @OneToOne, потому что в Embedded класс java содержит отношение "Имеет" в классе и с помощью аннотации @Embedded мы сохраняем объект в базе данных. и в отношениях OneToOne мы также сохраняем объект в базе данных.

4b9b3361

Ответ 1

@OneToOne предназначен для сопоставления двух таблиц DB, связанных с отношением один к одному. Например, у Клиента всегда может быть одна запись в таблице имен.

Альтернативно, если эти поля имени находятся в таблице Customer (не в отдельной таблице), вы можете захотеть @embedded. На первый взгляд вы можете просто добавить поля имени в качестве стандартных атрибутов для объекта Customer, но может быть полезно, если те же самые столбцы отображаются на нескольких таблицах (например, у вас могут быть столбцы имен в таблице поставщика).

Ответ 2

Разница между композицией и агрегацией. @Заложенные объекты всегда управляются в течение жизненного цикла их родителей. Если родитель обновляется или удаляется, они обновляются и удаляются. Объекты @OneToOne могут имитировать композицию с помощью опции cascadeType в своей аннотации @Join, но по умолчанию они агрегируются, так как их жизненный цикл отличается от их родительских объектов.

Ответ 3

@Embedded используется с объектами Value (объекты, которые имеют значение только при присоединении к объекту), тогда как сопоставление один к одному происходит между двумя объектами, имеющими свое существование и значение.

Например,

Объект Value и @Embedded: если у нас есть класс User, и этот класс имеет в нем объект Object, его можно рассматривать как объект значения, поскольку только адрес не имеет никакого значения до тех пор, пока он не будет связан с пользователем. Здесь адрес объекта можно аннотировать с помощью @Embedded.

От одного к одному и @OneToOne: если у нас есть класс пользователя, и этот класс имеет объект "Отец" или объект "Мать" , мы хотели бы аннотировать экземпляр "Отец" или "Мать" как @OneToOne поскольку "Отец" или "Мать" имеют свой собственный смысл и существование и не являются объектами Value для класса User.

Близкая разница между @OneToMany и @ElementCollection. Оба они используются для сохранения переменных экземпляра типа Collection в классе Java. Разница заключается в том, что @ElementCollection следует использовать, когда элементы коллекции, которые сохраняются, являются объектами Value, тогда как @OneToMany используется, когда эльмы и объект имеют четко определенные смысл и существование.

Ответ 4

@Embedded обычно представляет составной первичный ключ в качестве внедряемого класса:

@Entity
public class Project {
    @EmbeddedId ProjectId id;
     :
}

@Embeddable
Class ProjectId {
    int departmentId;
    long projectId;
}

Поля первичного ключа определяются в вложенном классе. Объект содержит одно поле первичного ключа, которое аннотируется с помощью @EmbeddedId и содержит экземпляр этого внедряемого класса. При использовании этой формы отдельный класс идентификатора не определен, так как сам встраиваемый класс может представлять полные значения первичного ключа.

@OneToOne предназначен для сопоставления двух таблиц DB, связанных с отношением один к одному. @Id будет основным ключом.