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) 把对象序列化到流中