精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-03-04
我怎么想不明白 经理说,用联合主键可以避免冗余数据产生,我也没想明白, 还请个位大大指教一二 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-03-04
chris365 写道 相比联合主键,uuid.hex的方式生成ID,有什么优势啊?
编码简单, 可以用一个DAO就搞定所有的操作. |
|
返回顶楼 | |
发表时间:2005-03-04
我们公司那个做C++的家伙就爱用联合主键,恨死我了
|
|
返回顶楼 | |
发表时间:2005-03-07
读取的性能比较差,O/R Mapping都是以主键的方式来识别纪录的,单一主键已经能够满足应用,而且速度快,所以会值得推荐
|
|
返回顶楼 | |
发表时间:2005-03-07
其实你们说的都不对,在Hibernate来说,一个PO状态的判定完全依赖于主键属性的值,甚至很多PO的隐形的级联操作,例如关联对象的是否级联增加/更新这些判定也完全依赖于主键属性的值,所以主键属性值的维护对于Hibernate能否正确的运行,正确的持久化数据至关重要。
如果当你使用无意义的逻辑主键的时候,主键的维护完全是由Hibernate自动进行的,你无须关注主键的维护,自然就避免了很多问题的产生;而如果你选择自己手工维护主键(联合主键就必须手工维护),所有的这些维护主键的重任都必须由你来负责,你必须小心翼翼的编程,避免造成无法正确持久化,对于一个不是非常精通Hibernate的人来说,这通常比较难达到,更何况在分层架构中,Web层程序员仅仅操作DAO接口层,他更加不了解PO状态维护的个中微妙之处,极易犯错误那也是在所难免。 所以采用无意义的逻辑主键一定Hibernate的首选。 |
|
返回顶楼 | |
发表时间:2005-03-07
>>所以采用无意义的逻辑主键一定Hibernate的首选。
但,通常主键是很有意义的字段,如流水号,电话号码等做主键!所以很多时候我的主键生成策略不得不选assigned :( |
|
返回顶楼 | |
发表时间:2005-03-07
如果是唯一主键,但是为assign,Hibernate能够做到级连删除/修改吗?
|
|
返回顶楼 | |
发表时间:2005-03-07
Alan.Weng 写道 >>所以采用无意义的逻辑主键一定Hibernate的首选。
但,通常主键是很有意义的字段,如流水号,电话号码等做主键!所以很多时候我的主键生成策略不得不选assigned :( 呵呵, 这样说的话有扯到了业务主键和逻辑主键的争论上来了 |
|
返回顶楼 | |
发表时间:2005-03-08
Alan.Weng 写道 >>所以采用无意义的逻辑主键一定Hibernate的首选。
但,通常主键是很有意义的字段,如流水号,电话号码等做主键!所以很多时候我的主键生成策略不得不选assigned :( 但是Hibernate/JDO这种ORM都是不允许你修改主键的,万一用户输入错误了电话号码,并且还做了一堆相关的东东,他想修改的话, 系统只能先删除,再插入一堆数据了。如果是无意义主键,那么就update一下就OK了。 |
|
返回顶楼 | |
发表时间:2005-03-09
使用逻辑主键好处多多,如果认为这也是数据冗余那我也就无话可说了
|
|
返回顶楼 | |