是否可以将类注释为@Embeddable,或将属性注释为@Embedded?
示例代码:
@Embeddable
class A{
...
}
class B{
...
}
@Entity
class Foo {
A a;
@Embedded B b;
}何时首选@Embedded和@Embeddable
发布于 2016-02-03 20:39:43
据我所知,@Embedded/@Embeddable主要有两种用途:
首先,也是最重要的:拆分大型实体类。在数据库世界中,一个大的表(一个包含许多列的表)就足够了。拆分这样的表可能会使事情变得更糟,并与数据库设计原则发生冲突。另一方面,在Java语言(或一般的面向对象语言)中,大型类是code smell。在这里,我们希望将包括实体类在内的类拆分成更小的单元。@Embedded/@Embeddable允许我们在不拆分数据库表的情况下轻松地实现这一点。
其次,它允许重用实体之间的公共映射。假设每个表都有一个简单的修订跟踪,有两列包含更改行的人的用户名和发生的时间。然后,可以创建一个覆盖这些行的@Embeddable实体,然后通过嵌入它在所有实体中重用它(而不是在每个实体中重复与这些列对应的变量)。
发布于 2016-02-03 19:38:50
如果我们的Person和Address是两个POJO,那么您不想为Address创建另一个表,但希望将地址嵌入到person表中。因此,Address将值加到Person对象中,但对单个对象没有任何意义。在这种情况下,我们可以使用:
@Embeddable
public class Address{
}
@Entity
public class Person
{
@Embedded
private Address address;
}发布于 2018-05-02 18:37:32
您可以将@Embeddable和@Embedded一起使用。您将您的类标记为@Embeddable,这表示该类不会作为单独的表存在于DB中。现在,当您在字段本身使用@Embedded时。
单词embeddable和embedded实际上给了你一个很大的线索。
Embeddable =这个类可以嵌入到一个类中embedded =这个类现在将作为一个字段嵌入到你的类中。
https://stackoverflow.com/questions/35174981
复制相似问题