1.什么是序列化和反序列化?

Seriallization(序列化)是一种将对象以一连串的字节描述的过程;

反序列化deserialization是一种将这些字节重建成一个对象的过程.

2.什么情况下需要序列化?

a.当你想把内存中的对象保存到一个文件中或者数据库中的时候

b.当你想用套接字在网络上传送对象的时候

c.当你想通过RMI传输对象的时候。

1.对象的持久化(Persistence)

   对象持久化就是让对象的生存期超越使用对象的程序的运行期。将对象存储在可持久保存的存储介质上,在实际应用中,运用相应的对象持久化框架,将业务数据以对象的方式保存在数据库中,如比较早的Hibernate。在一定周期内保持不变就是持久化,持久化是针对时间来说的。数据库中的数据就是持久化了的数据,只要你不去删除或修改。比如在IE浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化。对象持久化的方式有很多种,根据周期不同有,page,Session,Application。

   通俗点理解就是,把对象当做一快鲜肉,不做持久化处理,这块肉很快就是变质不能用了,做持久化处理,就会把鲜肉放到冷库中保存,这样可以保存相当长的时间。

  持久化是一种对象服务,就是把内存中的对象保存到外存中,让以后能够取回。需要实现至少3个接口:

  void Save(object o) 把一个对象保存到外存中

  Object Load(object oid) 通过对象标识从外存中取回对象

  boolExists(object oid) 检查外存中是否存在某个对象

  为什么需要持久化服务呢?那是由于内存本身的缺陷引起的:

  内存掉电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号,遗憾的是,人们还无法保证内存永不掉电。内存过于昂贵,与硬盘、磁带、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

2.对象的序列化(Serialization)

  JVM 向我们屏蔽了内存操作相关的信息,我们并不知道数据是以什么样的形式来存储和组织的,当对象需要进行传输时,java提供了序列化的方法方便我们对数据进行传输操作。对象序列化后的数据格式可以是二进制,可以是XML,也可以是JSON等任何格式,反序列化则是相反的操作。序列化是为了解决对象的传输问题,当传输一个对象时,则需要实现2个接口:

  void Serialize(Stream stream,object o) 把对象序列化到流中

  object Deserialize(Stream stream) 把流反序列化成对象
  这种传输可以是线程之间、进程之间、内存外存之间、主机之间的,凡是可以持久化的对象都可以序列化。
  总的来说,对象持久化和对象序列化是两个完全不同的应用场景,尽管你也可以说将一个对象序列化后存储在数据库中,但是你也不能说是对象持久化。

java 之持久化和序列化(反序列化)相关推荐

  1. java Serializable和Externalizable序列化反序列化详解--转

    一.什么是序列化?   "对象序列化"(Object Serialization)是 Java1.1就开始有的特性. 简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字 ...

  2. 2.JAVA自带的序列化反序列化机制

  3. 【Java】用Jackson进行JSON序列化/反序列化操作

    Java类和JSON Speaker类: import java.util.ArrayList; import java.util.Arrays; import java.util.List;publ ...

  4. 用 XStream 序列化/反序列化 XML 为 Java 对象(实例)

    用 XStream 序列化/反序列化 XML 为 Java 对象(实例) Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0)  编辑 收藏 网 ...

  5. java rest 序列化_http请求/restful/序列化反序列化/JSON

    1.为什么要实现Serializable (1)将内存中的对象数据存在磁盘中持久化 (2)将对象从一个应用程序发送到另一个应用程序 实现Serializable接口可以把对象序列化为字节流,实现传输必 ...

  6. 10.8-全栈Java笔记:序列化/反序列化的步骤和实例

    本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我 ...

  7. Java 序列化反序列化框架比较

    文章目录 一.简介 二.序列化框架 1.JDK 2.XML序列化 3.JSON序列化 4.Hessian 5.Avro序列化 6.Kyro序列化 7.Protostuff 三.序列化框架对比测试 1. ...

  8. java序列化 反序列化_Java序列化– Java序列化

    java序列化 反序列化 Serialization in Java was introduced in JDK 1.1 and it is one of the important feature ...

  9. 序列化/反序列化,我忍你很久了,淦!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 工具人 上次不知道是哪个小伙伴留言说,关于对象 「序列化和反序列化 ...

最新文章

  1. android nfc peer to peer 实例,NFC Peer2Peer Mode - Android Beam - ISO 18092
  2. android:scaleType的各个属性解释
  3. IT第三阶段?“智慧的运算”的未解之谜
  4. 常用工具备忘(更新中)
  5. 如何在Mac OSX 系统上安装 Vagrant
  6. Chinese NER Using Lattice LSTM
  7. 方维模板修改,发布分享、主题有商品时,标签需自动写到input里,不要再手动去点击添加,手动点击可取消...
  8. OSI七层模型设计思路
  9. jdk提供的用于并发编程的同步器有哪些
  10. 消防信号总线原理_消防联动工作原理
  11. 微信小程序开发——最新网络流行语(前言)
  12. 用PS擦除图片中不想要的部分,并保留图片背景
  13. 2022-2028全球谋杀悬疑游戏行业调研及趋势分析报告
  14. 微信公众号使用Emoji表情
  15. 熔断器Hystrix配置及使用
  16. 使用计算机处理问题的步骤,1.1使用计算机解决问题的一般过程 课件.ppt
  17. winxp如何锁定计算机,如何锁定winXP电脑的桌面?
  18. 中国民生银行陈琼:开放银行助力数字普惠金融
  19. 房测之友BMF2018运行时出错:“管理员已阻止你运行此应用。有关详细信息,请与管理员联系。”
  20. oracle loip,配置数据链路、IP 接口和 IP 地址

热门文章

  1. 【DIY】送给儿子的感应小夜灯,DIY小夜灯,无需编程,用人体红外感应传感器制作小夜灯...
  2. 【体验】18650锂电池充电器体验,功能测试,18650充电测试
  3. 转发一个深度、实用的技术帖——实现ADM3251E与3.3V系统的RS-232接口隔离
  4. linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法
  5. 虚拟化方面包含了主机、存储和网络
  6. 【编程之外】为什么我们要写技术博客?
  7. SQL的主键和外键约束
  8. Git常用命令速查表
  9. JS魔法堂:判断节点位置关系
  10. HDOJ 4883 TIANKENG’s restaurant