设为首页 加入收藏

TOP

Java 持久化和序列化的简单理解
2016-12-28 08:16:23 】 浏览:276
Tags:Java 持久化 序列化 简单 理解

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开发代码性能优化总结 下一篇Golang跨平台交叉编译

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目