java 类的序列化和持久化理解
来源:互联网 发布:通甲优博 知乎 编辑:程序博客网 时间:2024/05/18 04:01
什么是序列化?
把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。 实现java.io.Serializable接口的类对象可以转换成字节流(序列化)或从字节流恢复(饭序列化),不需要在类中增加任何代码。
序列化 : 把对象转换 为二进制数据(如网络传输,存储数据库等),必须实现序列化接口 (java.io.Serializable).
public class Setting implements Serializable{ private static final long serialVersionUID = -1478999889661796840L; //略}
serialVersionUID的作用是对持久化对象的序列化的版本控制,控制各版本反序列化时是否兼容。Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。
首先要说的是,Hibernate中ORM里对应的映射文件bean,必须实现序列化.因为bean里的数据需要存入数据库(要转化为二进制保存),进行存取工作.
JAVA类的数据 ,如果要进行相关的存储工作(如写文件,网络传输,写数据库等),那么这个数据的类 就必须实现序列化接口 (java.io.Serializable).
什么是持久化
持久化 : 把对象保存 在介质上(如写文件,读文件不是), 没有接口实现,一般指方法调用.
二、持久化
序列化是能够实现对象的写入和写出,这样在此基础上,持久化就水到渠成了。持久化是将程序数据在持久状态和瞬时状态间转换的机制。JDBC就是一种持久化机制。文件IO也是一种持久化机制。在一定周期内保持不变就是持久化,持久化是针对时间来说的。持久化就是把内存中的对象保存到外存中,让以后能够取回。而保存和取回的过程就是经过序列化和对象io完成的。
序列化是为了解决对象的传输问题,使对象传输可以在线程之间、进程之间、内存外存之间、主机之间进行。我之所以在这里提到序列化,是因为我们可以利用序列化来辅助持久化。
如果按照存储介质和生命周期的长短划分,所有的数据都以两种形式存在,其中一种是保存于内存中的运行时对象,另一种则是存储于持久化物理介质中的文件,比如数据库文件等。数据的持久化关注于相同的数据在不同形态数据之间的转化,解决的是如何将内存对象持久化存储,以及从物理介质中加载数据并创建内存对象。
数据的持久化是序列化的又一个典型的应用,对象只有在序列化之后才能进行持久化存储,从持久化存储介质加载的数据通过反序列化转变成运行时对象。
- java 类的序列化和持久化理解
- java 类的序列化和持久化理解
- Java-序列化、持久化和压缩
- Java 持久化 和 序列化 区别
- 深入理解hibernate中持久化和序列化
- 理解hibernate中持久化和序列化
- Java序列化的总结和理解
- java序列化,持久化
- java序列化,持久化
- 序列化和持久化
- 序列化和持久化
- java序列化的理解
- java序列化的理解
- Java:对象的持久化与序列化
- ObjectInputStream 和 ObjectOutputStream(对象的序列化、持久化)
- 序列化和持久化的区别与联系
- Java序列化和反序列化的简单理解
- java序列化和反序列化的理解
- hd2816 I Love You Too
- poj 1796 线段树+dp
- *** Assertion failure in -[UITableView layoutSublayersOfLayer:]
- 求数组最小值
- mesos概述
- java 类的序列化和持久化理解
- JavaScipt 排序算法
- Lync Online在2015年更名为Skype for Business
- NYOJ 58
- error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCom
- angular的指令的子作用域继承问题
- 捕获键盘的每个字符,包括不可打印字符
- HDU 5290 Bombing plan 树形dp
- C++构造函数与传默认值的关系