【发布时间】:2012-12-16 06:38:07
【问题描述】:
这是来自Hibernate official tutorial:
还有一个替代的
<composite-id>声明允许使用复合键访问旧数据。强烈建议不要将其用于其他任何用途。
为什么不鼓励使用复合键?我正在考虑使用一个 3 列表,其中所有列都是外键,并且一起形成一个主键,这在我的模型中是一个有意义的关系。我不明白为什么这是一个坏主意,尤其是我将对它们使用索引。
还有什么选择?创建一个额外的自动生成的列并将其用作主键?我仍然需要查询我的 3 列!?
简而言之,为什么这个说法是正确的?还有什么更好的选择?
【问题讨论】:
-
您应该定义一个代理主键,然后将您现有的组合重新定义为唯一(自然或业务)键。这会带来更简洁、更易于维护的数据库设计。
标签: java database hibernate orm composite-key