假设我有一个依赖于User类的类Address。 地址是组件类型。 Can Address类包含对任何其他实体的引用,例如Country。
如果是的话?
地址和国家/地区的所有4种关系是否可行
一个对一
多到一个
多对多
一对多
如果可能,请解释一些JPA注释
答案 0 :(得分:2)
[更新]组件是“独立值”或“值对象”。 部分支持出站关系以及与mappedBy
规范的入站关系,但“组件”不是一流的“实体”。
许多持久性功能 - 查询,缓存,锁定,批量加载和会话控制功能主要是在“实体”级别设计的。超越某一点,你可以用“组件”做些什么限制..你是否会遇到这样的限制取决于你的深度。
但实际上对场景进行建模时,带有外键的Country
表的效用是有限的。因此,最正确的设计可能是保持Address.Country非规范化并通过自动完成支持它。
这是首选方法的原因:
当国家/地区确实更改其名称或边界时 - 通常不会采用“关系规范化”方式。例如,南斯拉夫 - >克罗地亚,塞尔维亚,黑山。苏丹 - >苏丹,南苏丹。有争议的边界转移&国家分手,但实际上只能重新命名一个明确的国家并不常见。
与人比较:人们有稳定的身份和可以更改他们的姓名/地址,但是国家没有这个以非常有用的方式。