使用和hibernate直接反向工程后,就发现实体类自动实现了系列化,这个由什么用户
还有看到有些企业应运中的代码,他们的实体类有的有重写 equals和hashcode方法 这又三是做什么用处的?
如果不实现系列化或者不重写 equals和hashcode有什么差别

解决方案 »

  1.   

    serializable是为了让对象能在网络上传输
    重写equals和hashcode是为了满足自己的业务需要
      

  2.   

    什么样的业务需求,需要去重写equals和hashcode方法  举些例子
      

  3.   

    比如如果我们要去比较两个对象,如果其中ID和name都相等的话,那么我们就认为这两个对象相等,不去考虑其他的属性。这时候我们就要重写这两个方法!
      

  4.   

    说到序列化呢  其实是有两个作用的 第一是便于网上大批量数据的传输    第二呢 就是把文件保存进硬盘 这种有一种好处就是 占用硬盘体积小(玩过游戏的用户一般都会有经历  就是玩到一般 忽然有事要出去 但是游戏想着回来接着玩 于是就去保存 那么保存的时候我们一般用的都是序列化的技术) 至于你说的 重写Equals方法  这个是因为在Object对象中(所有类的父类)中  有Equals方法,这个方法用来做什么呢? 默认的方法是用来比较两个对象的内存地址是都一致!注意  Equals方法 之后在对象类型里边有这个方法 而在Java的基本数据(int float eman double ....)类型里边是没有Equals这个方法的!一般我们重写这个方法 只是为了满足一些程序的特定需求! 下面我们看HashCode
    Hash函数:任意长度的消息压缩成某一固定长度消息的函数。即Hash就是找到一种数据内 容和数据存放地址之间的映射关系。任何class如果覆写了equals()方法,就必须覆写hashCode()。 至于你的hashCode有没有重写里边的方法 这个没有关系   你需要的只是满足Java语法的需求!