持久化(Persistence)
作者:互联网
1、概念:
持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)
2、主要应用
将 内存中的对象 存储在 数据库 中,或者存储在 磁盘文件中、XML数据文件中 等等。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
3、理解
在一定周期内保持不变就是持久化,持久化是针对时间来说的。数据库中的数据就是持久化了的数据,只要你不去删除或修改。
比如在IE浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化。 对象持久化的方式有很多种,根据周期不同有page、Session、Application。 对象序列化机制需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态, 对象序列化的过程是对象持久化的方法之一,把对象保存到文件中。 4、两个层面
应用层 |
系统层 |
如果关闭(shutdown)你的应用然后重新启动则先前的数据依然存在。 | 如果关闭(shutdown)你的系统(电脑)然后重新启动则先前的数据依然存在。 |
5、特点
对象 |
市场 |
序列化 |
持久化是一种对象服务,就是把内存中的对象保存到外存中,让以后能够取回。 需要实现至少3个接口:
为什么需要持久化服务呢?那是由于内存本身的缺陷引起的: 内存掉电后数据会丢失,但有一些对象是无论如何都不能丢失的, 比如银行账号,遗憾的是,人们还无法保证内存永不掉电。 内存很昂贵,与硬盘、磁带、光盘等外存相比,内存价格要高2~3个数量级, 而且维持成本也高,至少需要一直供电吧。 所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。 |
如何构建一个好的持久化框架? 框架是否好在于在扩展性、缩放性、重用性上取得良好的平衡:
|
也是一种对象服务,就是把内存中的对象序列化成流、或者把流反序列化成对象。 需要实现2个接口:
序列化和持久化很相似,有些人甚至混为一谈, 其实还是有区别的? 序列化是为了解决对象的传输问题, 之所以在这里提到序列化? 是因为我们可以利用序列化来辅助持久化, 可以说凡是可以持久化的对象都可以序列化, 因为序列化相对容易一些(也不是很容易), 所以主流的软件基础设施,已经把序列化的框架完成了 比如.net和java |
6、意义
兴起原因 |
运用 |
7、相关实现
Hibernate | JPA(Java Persistense API) | Mybatis |
为应用程序提供了高效的O/R关系映射和查询服务, 为面向对象的领域模型到传统的关系型数据库的映射, 提供了一个使用方便的框架。 |
是EJB3.0的一部分,为其提供了一套O/R关系映射的API, 但不仅限于EJB中使用, 它也可以在web应用或者应用程序客户端中被使用, 甚至在Java桌面程序中被使用。 |
也是一种orm框架。 |
标签:持久,框架,对象,内存,外存,序列化,Persistence 来源: https://www.cnblogs.com/slightFly/p/14089407.html