我在谷歌搜索了很多,但我没有找到任何满意的答案。所以任何一个请告诉我一个senario,在hibernate中使用hbm文件中的natural-id。任何帮助将不胜感激。
提前致谢.....
答案 0 :(得分:5)
您的问题有点模糊,但在hbm文件中使用Natural-Id的一个原因是自动执行应该是唯一的事情。该属性应该分配给使您的数据唯一的字段。当你将属性放在那些字段上时,hibernate会为你生成唯一的索引。
如果你的问题是Why should one ever use natural keys?
这里列出的内容太多了,只是一个简单的例子......
如果您决定通过网络服务,订阅源等公开您的数据,那么为最终用户提供数据库密钥并不是一个好主意。这有很多原因,其中一个原因是如果它们存储它会发生什么,你重新键入?你被卡住了!最好用他们理解的术语进行交谈,这将是数据中已经存在的事物(当然;))
如果您有兴趣自己阅读AgileData.org有关于自然与代理的精彩内容
答案 1 :(得分:3)
强烈建议您在表上使用代理主键,即名为id的列,该列不是从业务数据派生的。但是,很可能是字段组合形成表的合理业务键。这些字段应该是非null且不可变的。这将被标记为自然键,也将用于该类的equals和hashCode实现。
如果Hibernate要从映射的域类生成数据库模式,则此自然键将用于为表生成唯一索引。