[size=medium] 为什么Hibernate推荐持久化类重写equals()、hashCode()、toString()三个方法且实现Serializable接口?
这样做有什么好出?
这三个方法分别在何时将被调用?[/size]
[quote]实现Serializable接口就是为了可被序列化到磁盘等
equals()、hashCode()是Hibernate查找缓存的持久化对象要用到的,
map的内部实现就是要根据hashCode()来得到对象,
equals()自然就是判断对象是否相等的依据
一般来说重写了equals()就得重写hashCode(),不然map里存放对象会出问题
toString()就是一个调试方法,不重写也没关系 [/quote]
楼上说的很详细
但是我在真实项目遇到过
重写过hashCode等方法后的
Hibernate实体衍射对象
在操作一对多的关系数据是很
配置Set的情况 会发生异常
貌似在写传统的WEB应用中只需要序列化数据对象即可
在网络中完成对数据的包装与解包 方便数据的传输度和安全性
实现Serializable接口就是为了可被序列化到磁盘等
equals()、hashCode()是Hibernate查找缓存的持久化对象要用到的,
map的内部实现就是要根据hashCode()来得到对象,
equals()自然就是判断对象是否相等的依据
一般来说重写了equals()就得重写hashCode(),不然map里存放对象会出问题
toString()就是一个调试方法,不重写也没关系