`

Hibernate POJO为什么要实现Serializable接口

阅读更多

 

hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中的传输 等等。

 

java中常见的几个类(如:Interger、String等),都实现了java.io.Serializable接口。

 

实现 java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化类的所有子类本身都是可序列化的。这个序列化接口没有任何方法和域,仅用于标识序列化的语意。

 

确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自 不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况 下就要用到对象的序列化。

 

只有序列化的对象才可以存储在存储设备上。为了对象的序列化而需要继承的接口也只是一个象征性的接口而已,也就是说继承这个接口说明这个对象可以 被序列化了,没有其他的目的。之所以需要对象序列化,是因为有时候对象需要在网络上传输,传输的时候需要这种序列化处理,从服务器硬盘上把序列化的对象取 出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理。

 

将二级缓存中的内容持久化保存下来,便于恢复缓存的信息,hibernate的缓存机制通过使用序列化,断定应该是基于序列化的缓存,如没有 serializable接口,在序列化时,使用objectOutputStream的write(object)方法将对象保存到文件时将会出现异常。

3
3
分享到:
评论
4 楼 yanln 2012-07-04  
3楼回答正解.
3 楼 rensanning 2012-07-02  
序列化一般用于网络通信和对象存储。

当两个进程在进行通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。对象存储也是一个道理。如果没有序列化机制,存和取将没有规律。

Java序列化的机制和原理:http://developer.51cto.com/art/200908/147650.htm
2 楼 jyjava 2012-07-02  
序列化将对象的内容转为0,1的的形式,磁盘存储的内容就是怎么滴存储的
1 楼 hellostory 2012-07-02  
只有序列化的对象才可以存储在存储设备上?Why?
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics