如何,何时何地在hibernate中使用hbm文件中的natural-id?

时间:2011-06-06 12:25:53

标签: hibernate hibernate-mapping

我在谷歌搜索了很多,但我没有找到任何满意的答案。所以任何一个请告诉我一个senario,在hibernate中使用hbm文件中的natural-id。任何帮助将不胜感激。

提前致谢.....

2 个答案:

答案 0 :(得分:5)

您的问题有点模糊,但在hbm文件中使用Natural-Id的一个原因是自动执行应该是唯一的事情。该属性应该分配给使您的数据唯一的字段。当你将属性放在那些字段上时,hibernate会为你生成唯一的索引。

如果你的问题是Why should one ever use natural keys?这里列出的内容太多了,只是一个简单的例子......

如果您决定通过网络服务,订阅源等公开您的数据,那么为最终用户提供数据库密钥并不是一个好主意。这有很多原因,其中一个原因是如果它们存储它会发生什么,你重新键入?你被卡住了!最好用他们理解的术语进行交谈,这将是数据中已经存在的事物(当然;))

如果您有兴趣自己阅读AgileData.org有关于自然与代理的精彩内容

答案 1 :(得分:3)

强烈建议您在表上使用代理主键,即名为id的列,该列不是从业务数据派生的。但是,很可能是字段组合形成表的合理业务键。这些字段应该是非null且不可变的。这将被标记为自然键,也将用于该类的equals和hashCode实现。

如果Hibernate要从映射的域类生成数据库模式,则此自然键将用于为表生成唯一索引。