该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-11-24
Readonly,偶们什么都用,不管list,hashset,hashmap,bag.........
不过,属List最烦人了,尤其双向关系的时候........写这东西的代码的时候,我都很小心测试,除非必要都不用List. |
|
返回顶楼 | |
发表时间:2004-11-24
双向list应该死定吧,index不完整!
|
|
返回顶楼 | |
发表时间:2004-11-24
weihello 写道 还有yucai说的,“就是因为这个问题,我才对这种方式保持警惕”, 如果问题 确实出在这里,我可以一次性全部解决,改动也只有一处。 而其说的“真有你说 的场景,我会考虑再加上,可还是没有碰上”却是真正的地雷。 显然,他这样做是 本末倒置,为了贪图方便牺牲其他的一些可操作性。 呵呵,没有看见应用场景怎么说我丧失了可操作性?为了没有看见的场景而增加代码复杂度,才真是累啊. 所以,我倒觉得你是本末倒置. 此话题直到你能举出一个非用不可的场景时,我再继续. |
|
返回顶楼 | |
发表时间:2004-11-24
嘿嘿,youcai,我实际上已经列了,你仔细看帖子的话
引用 双向list应该死定吧,index不完整!
可以是可以滴,就是麻烦些而已了。 |
|
返回顶楼 | |
发表时间:2004-11-24
愿闻其详,大前天想了大半天都没办法,然后对自己说,以后遇到这样的问题,一边用list,一边用bag好了。还有顺便问个问题,在你最前面的说的例子中,作了group到user的集合引用,不怕user很多很多,系统慢吗,就算所有都作了cache和lazy?
|
|
返回顶楼 | |
发表时间:2004-11-25
双向关系的List你需要双边都维护并更新,比较烦而已。其他没有什么。
至于你说的比较,其实真正在程序中是小概率事件。 比如,在一个session中,这种情况从头到尾巴都要比的并不多。 即使从头到尾,效率也并非你想象那般低。你做个简单的测试就知道了。 |
|
返回顶楼 | |
发表时间:2004-11-26
weihello 写道 嘿嘿,youcai,我实际上已经列了,你仔细看帖子的话
没有看出来,你难道是依赖于timerange的equals()做并,交等等的操作吗?如果那样的话,我就无话可说了。我是不会那么作的。 双项的操作真是不是一般的烦,尤其是几个类之间都有这样的关系的时候,我曾经做的一个系统,要求group之间可以多对多双向,group和user之间多对多,最后做出来的东西惨不忍睹。 |
|
返回顶楼 | |
发表时间:2005-01-13
shenli 写道 业务字段不一定就有就有唯一的,不可变的,就像这个论坛的用户信息一样(当然我只是从表面看),说实话,我个人觉得ID本来是最好的。既然这个ID放在实体对象里面,就不代表它仅仅是数据表的主键,而确实是对象自身的标识符。只是由于ID是延迟赋值的,导致这样的矛盾,存在了这样具有奇怪状态的实体。而用业务字段生成hashcode一样会出现HashSet无法重读的现象(当然不会在这样的语义下),只是ID的改变被hibernate隐藏了,不是显式的,所以有点莫名其妙。另外,既然用业务字段来做hashcode之类给我的感觉ID的属性就有点多余了,只是为了迎合关系数据库,象prevayler应该就不需要。
PS 实在不行我可以强制要求所有的entity在new出来之前都保存一次数据库,用工厂创建,当然有点开销,出问题了回滚事务,不知道行不行 今天看到一篇blog: http://jroller.com/page/jcarreira/20041215 ,和shenli说的做法很像,只是new出来以前,采用assigned主键,给一个UUID。 而且给出了详细的优点和缺点比较,偶被打动了,试验一下,看看能不能用在以后的项目中...... |
|
返回顶楼 | |
发表时间:2005-01-13
commons lang下有现成的方法可以用啊,基类调用一下就可以了:
public class Entity implements Serializable { public String toString(); { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);; } public boolean equals(Object o); { return EqualsBuilder.reflectionEquals(this, o);; } public int hashCode(); { return HashCodeBuilder.reflectionHashCode(this);; } } |
|
返回顶楼 | |
发表时间:2005-10-20
被讨论的我也纳闷了,commons lang都能直接套用的,为什么还要搞这么麻烦,下面的代码难道有问题?不知道commons lang有没有解决各位说的问题
public String toString(); { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);; } public boolean equals(Object o); { return EqualsBuilder.reflectionEquals(this, o);; } public int hashCode(); { return HashCodeBuilder.reflectionHashCode(this);; } |
|
返回顶楼 | |