为什么Hibernate推荐持久化类重写三个方法?

[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()就是一个调试方法,不重写也没关系