博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate的实体类为什么需要实现 java.io.Serializable 接口
阅读量:5244 次
发布时间:2019-06-14

本文共 952 字,大约阅读时间需要 3 分钟。

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

Java 中常见的 String 也实现了 java.io.Serializable 接口。

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

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

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

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

Hibernate 并不需要持久化类一定实现 java.io.Serializable 接口,但对于采用分布式结构的Java应用,当Java 对象在不同的进程节点之间传输时,这个对象所属的类必须实现 java.io.Serializable 接口,此外,在 Java Web 应用中,如果希望对 HttpSession 中存放的Java对象进行持久化,那么这个 Java 对象所属的类也必须实现 java.io.Serializable 接口。

 

转载于:https://www.cnblogs.com/PacinoY/p/7485667.html

你可能感兴趣的文章
C++:多维数组的动态分配(new)和释放(delete)
查看>>
c#基础学习(0806)之抽象类实现多态
查看>>
S5PV210根文件系统的制作(一)
查看>>
51NOD 1244 莫比乌斯函数之和
查看>>
[bzoj1923]外星千足虫[高斯消元]
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
分析 PHP大马-php_mof SHELL
查看>>
TCP/IP
查看>>
[推荐] 协同滤波 —— Collaborative Filtering (CF)
查看>>
python中使用中文
查看>>
数据清洗
查看>>
Android 动态加载 (二) 态加载机制 案例二
查看>>
MVC5 + EF6 + Bootstrap3 (10) 数据查询页面
查看>>
Windows下的Eclipse启动出现:a java runtime environment(JRE) or java development kit(JDK) must be.......
查看>>
PLC 通讯
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
python之decode、encode及codecs模块
查看>>
使用 Apache Pig 处理数据6
查看>>
Hadoop集群内lzo的安装与配置
查看>>