组件类型可以在hibernate中映射到实体类型吗?

时间:2013-09-07 10:23:14

标签: java hibernate

假设我有一个依赖于User类的类Address。 地址是组件类型。 Can Address类包含对任何其他实体的引用,例如Country。

如果是的话?

地址和国家/地区的所有4种关系是否可行

一个对一

多到一个

多对多

一对多

如果可能,请解释一些JPA注释

1 个答案:

答案 0 :(得分:2)

[更新]组件是“独立值”或“值对象”。 部分支持出站关系以及与mappedBy规范的入站关系,但“组件”不是一流的“实体”。

许多持久性功能 - 查询,缓存,锁定,批量加载和会话控制功能主要是在“实体”级别设计的。超越某一点,你可以用“组件”做些什么限制..你是否会遇到这样的限制取决于你的深度。

但实际上对场景进行建模时,带有外键的Country表的效用是有限的。因此,最正确的设计可能是保持Address.Country非规范化并通过自动完成支持它。

这是首选方法的原因:

当国家/地区确实更改其名称或边界时 - 通常不会采用“关系规范化”方式。例如,南斯拉夫 - >克罗地亚,塞尔维亚,黑山。苏丹 - >苏丹,南苏丹。有争议的边界转移&国家分手,但实际上只能重新命名一个明确的国家并不常见。

与人比较:人们有稳定的身份和可以更改他们的姓名/地址,但是国家没有这个以非常有用的方式。