java 的持久化和序列化的简单理解

1.对象的持久化(Persistence)java

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

   通俗点理解就是,把对象当作一快鲜肉,不作持久化处理,这块肉很快就是变质不能用了,作持久化处理,就会把鲜肉放到冷库中保存,这样能够保存至关长的时间。浏览器

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

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

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

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

  为何须要持久化服务呢?那是因为内存自己的缺陷引发的:对象

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

2.对象的序列化(Serialization)进程

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

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

  object Deserialize(Stream stream) 把流反序列化成对象
  这种传输能够是线程之间、进程之间、内存外存之间、主机之间的,凡是能够持久化的对象均可以序列化。
  总的来讲,对象持久化和对象序列化是两个彻底不一样的应用场景,尽管你也能够说将一个对象序列化后存储在数据库中,可是你也不能说是对象持久化。
相关文章
相关标签/搜索