Hibernate:@ Embedded注释技术和@OneToOne注释技术之间的区别

Har*_*ara 16 java annotations hibernate jpa

@Embedded注释技术和@OneToOne注释技术有什么区别,因为在嵌入式中,java类在类中包含"Has a"关系,并且在@Embedded注释的帮助下,我们坚持在数据库中有一个对象.在OneToOne关系中,我们还坚持在数据库中拥有一个对象.

Per*_*ion 9

它的组成和聚合之间的区别.@Embedded对象始终在其父级的生命周期内进行管理.如果更新或删除父级,则也会更新或删除父级.@OneToOne对象可以通过其@Join注释的cascadeType选项模仿合成,但默认情况下它们是聚合的,也就是说它们的生命周期与它们的父对象的生命周期是分开的.


Ben*_*ley 9

@OneToOne用于映射与一对一关系相关的两个DB表.例如,Customer可能始终在Name表中有一条记录.

或者,如果这些名称字段在Customer表上(而不是在单独的表中),那么您可能需要@embedded.从表面上看,您可以将名称字段作为标准属性添加到Customer实体中,但如果这些相同的列出现在多个表中(例如,您可能在Supplier表上有名称列),则可能很有用.


Ind*_*der 5

@Embedded 与值对象(仅当附加到对象时才有意义的对象)一起使用,而一对一映射是在两个具有自己的存在和含义的对象之间进行的。

例如

值对象和@Embedded:如果我们有一个 User 类,并且该类中有一个地址对象,则可以将其视为值对象,因为地址本身没有任何意义,除非与用户关联。这里的地址对象可以用@Embedded注解。

一对一映射和@OneToOne:如果我们有一个 User 类,并且该类有一个“Father”对象或“Mother”对象,我们希望将“Father”或“Mother”实例注释为 @OneToOne as 'Father ' 或 'Mother' 有其自己的含义和存在,并且不是 User 类的 Value 对象。

@OneToMany 和 @ElementCollection 之间存在密切相关的区别。两者都是用来保存Java类中Collection类型的实例变量。区别在于,当保存的 Collection 元素是值对象时使用 @ElementCollection,而当元素和对象具有明确定义的含义和存在时使用 @OneToMany。