0
我必须设计一个表来存储一些远程数据。我通过Web服务获得的数据有一个候选键,两列的组合,但我看到很少的帖子,他们不鼓励在hibernate中使用复合键,而是推荐使用代理键。如果我使用组合键设计表,那么我可以直接更新数据,但如果我使用代理键,那么在更新之前我必须首先获取主键。我的问题是我应该使用哪一个组合键或代理键?休眠组合键或代理键
我必须设计一个表来存储一些远程数据。我通过Web服务获得的数据有一个候选键,两列的组合,但我看到很少的帖子,他们不鼓励在hibernate中使用复合键,而是推荐使用代理键。如果我使用组合键设计表,那么我可以直接更新数据,但如果我使用代理键,那么在更新之前我必须首先获取主键。我的问题是我应该使用哪一个组合键或代理键?休眠组合键或代理键
说不复合键becasue ...
因此建议使用代理键。虽然它有其自身的缺点
与休眠的Java持久性陈述参考:
更多有经验的Hibernate用户独占使用saveOrUpdate();它更容易让Hibernate决定什么是新的和什么是旧的,尤其是在具有混合状态的更复杂的对象网络中。只有 独占saveOrUpdate()的缺点(不是很严重)是 ,它有时无法猜测实例是旧的还是新的 而不在数据库中触发SELECT(例如,当类是 映射到自然组合键和无版本或时间戳 属性。
限制的一些表现形式可以找到here。
因此,在使用自然键时,如果使用自然键,并且使用替代键时最好使用它们。
我必须更新超过一百万条记录,如果我使用代理键,那么我必须对所有记录进行选择和更新。有什么方法可以提高性能? – wolverine
更新一百万条记录听起来像你可能想要这样做,而不休眠。 –