首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候使用@Embedded和@Embeddable?

什么时候使用@Embedded和@Embeddable?
EN

Stack Overflow用户
提问于 2016-02-03 18:50:05
回答 4查看 10.3K关注 0票数 8

是否可以将类注释为@Embeddable,或将属性注释为@Embedded

示例代码:

代码语言:javascript
复制
@Embeddable
class A{
...
}

class B{
...
}

@Entity
class Foo {
    A a;
    @Embedded B b;
}

何时首选@Embedded@Embeddable

EN

回答 4

Stack Overflow用户

发布于 2016-02-03 20:39:43

据我所知,@Embedded/@Embeddable主要有两种用途:

首先,也是最重要的:拆分大型实体类。在数据库世界中,一个大的表(一个包含许多列的表)就足够了。拆分这样的表可能会使事情变得更糟,并与数据库设计原则发生冲突。另一方面,在Java语言(或一般的面向对象语言)中,大型类是code smell。在这里,我们希望将包括实体类在内的类拆分成更小的单元。@Embedded/@Embeddable允许我们在不拆分数据库表的情况下轻松地实现这一点。

其次,它允许重用实体之间的公共映射。假设每个表都有一个简单的修订跟踪,有两列包含更改行的人的用户名和发生的时间。然后,可以创建一个覆盖这些行的@Embeddable实体,然后通过嵌入它在所有实体中重用它(而不是在每个实体中重复与这些列对应的变量)。

票数 11
EN

Stack Overflow用户

发布于 2016-02-03 19:38:50

如果我们的Person和Address是两个POJO,那么您不想为Address创建另一个表,但希望将地址嵌入到person表中。因此,Address将值加到Person对象中,但对单个对象没有任何意义。在这种情况下,我们可以使用:

代码语言:javascript
复制
@Embeddable
public class Address{
}

@Entity
public class Person
{
    @Embedded
    private Address address;
}
票数 7
EN

Stack Overflow用户

发布于 2018-05-02 18:37:32

您可以将@Embeddable和@Embedded一起使用。您将您的类标记为@Embeddable,这表示该类不会作为单独的表存在于DB中。现在,当您在字段本身使用@Embedded时。

单词embeddable和embedded实际上给了你一个很大的线索。

Embeddable =这个类可以嵌入到一个类中embedded =这个类现在将作为一个字段嵌入到你的类中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35174981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档