Tho*_*erg 7 java jpa javax.persistence
在Java中可以将类注释为@Embeddable或将属性设置为@Embedded.示例代码:
@Embeddable
class A{
...
}
class B{
...
}
@Entity
class Foo {
A a;
@Embedded B b;
}
Run Code Online (Sandbox Code Playgroud)
什么时候喜欢@Embedded和@Embeddable?
据我所知,@Embedded/ 有两个主要用途@Embeddable:
首先,也是最重要的:拆分大型实体类.在数据库世界中,一个大表(一个有很多列)很好.打破这样的表可能会使事情变得更糟,并与数据库设计原则相冲突.另一方面,在Java(或一般的面向对象语言)中,一个大类是一个code smell.在这里,我们希望将类(包括实体类)拆分为更小的单元.@Embedded/ @Embeddable允许我们轻松地执行此操作,而无需拆分数据库表.
其次,它允许重用实体之间的公共映射.假设每个表都有一个简单的修订版跟踪,其中两列包含更改行的用户名以及发生的时间.然后,可以创建一个@Embeddable覆盖这些行的实体,然后通过嵌入它在所有实体中重用它(而不是重复每个实体中与这些列对应的变量.)
小智 6
如果我们有两个 POJO 的 Person 和 Address,您不希望为 Address 创建另一个表,但您希望将地址嵌入到 person 表中。所以 Address 正在为 Person 对象增加价值,但单独没有任何意义。在这种情况下,我们可以使用:
@Embeddable
public class Address{
}
@Entity
public class Person
{
@Embedded
private Address address;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6169 次 |
| 最近记录: |