0 0

对HIbernate 之 equals() 和 hashCode()的实现原则的困惑0

看了很多Hibernate的书,发现对于po类的实现原则中有一条是关于 equals() 和 hashCode()的实现,这两个方法众多书中都要求用业务主键来作为因子来实现equals() 和 hashCode()。
但是如果po类实例在业务的其它流程中被要求equlas要通过比较对象所有属性是否相等。这种情形该怎么办,难道从数据库取出后立马再转换成另外一个类对象,再去处理其它流程吗?
各位在处理这种情形时有何妙招?
2015年1月07日 10:33

2个答案 按时间排序 按投票排序

0 0

PO类作为业务实例,应该是判断属性值是否全部相等或者部分关键属性是否全匹配来确定是不是同一对象。所以equals应该是根据这个来重写。
然而业务主键完全可以直接用obj1.xxxx.equals(obj2.xxxx)来判断

2015年1月07日 17:21
0 0

我想到2个办法:
1,给你的PO类实现Comparable接口,里面实现业务属性的比较,然后返回0代表相等,返回别的值代表不相等。
2,做一些具有重载函数的帮助类,帮你进行比较操作,比如:

class EqulasUtil{

 bool isSame(ClassA src, ClassA target) {...}

 bool isSame(ClassB src, ClassB target) {...}

 ...

}

2015年1月07日 14:32

相关推荐

Global site tag (gtag.js) - Google Analytics