`
cuisuqiang
  • 浏览: 3960217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670058
社区版块
存档分类
最新评论

什么是持久化?

阅读更多

有一个人揪着问我什么是数据持久化,简单来说:对于概念上来说,就是数据保存到硬盘系统重启可恢复,对于开发人员来说,就是对象保存到数据库。 

但是拿这个问题一直问下去的话,显然以上解释不足以应付,一狠心,我从网上把一些理论内容搬下来了。

 

什么是持久化?
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。

 

如何去理解?
在一定周期内保持不变就是持久化,持久化是针对时间来说的。
数据库中的数据就是持久化了的数据,只要你不去删除或修改。
比如在IE浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化。
对象持久化的方式有很多种,根据周期不同有,page,Session,Application。
对象序列化机制对于需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态,
对象序列化的过程是对象持久化的方法之一,把对象保存到文件中。

 

不同层面理解

简单的理解持久化可以在二个层面:应用层和系统层
应用层
如果关闭(shutdown)你的应用然后重新启动则先前的数据依然存在。
系统层
如果关闭(shutdown)你的系统(电脑)然后重新启动则先前的数据依然存在。

 

序列化是什么?
序列化和持久化很相似,有些人甚至混为一谈,其实还是有区别的,序列化是为了解决对象的传输问题,传输可以在线程之间、进程之间、内存外存之间、主机之间进行。之所以在这里提到序列化,是因为我们可以利用序列化来辅助持久化,可以说凡是可以持久化的对象都可以序列化,因为序列化相对容易一些(也不是很容易),所以主流的软件基础设施,比如.net和java,已经把序列化的框架完成了。
持久化方案可以分为关系数据库方案、文件方案、对象数据库方案、xml数据库方案,现今主流的持久化方案是关系数据库方案,关系数据库方案不仅解决了并发的问题,更重要的是,关系数据库还提供了持久化服务之外的价值:统计分析功能。

 

相关实现
Hibernate
hibernate为应用程序提供了高效的O/R关系映射和查询服务,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
JPA
JPA(Java Persistense API)是EJB3.0的一部分,为其提供了一套O/R关系映射的API,但不仅限于EJB中使用,它也可以在web应用或者应用程序客户端中被使用,甚至在Java桌面程序中被使用。

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

5
3
分享到:
评论
3 楼 sayji 2014-04-22  
kuchaguangjie 写道
持久化, 就是 存在 硬盘上, 不是在内存里. 就这么简单.

你这是不严谨。下一代内存,相变内存(PCM),在关闭电源之后保留数据的特性,被业界视为未来闪存和内存的替代品。镁光已经生产出了第一代PCM相变内存芯片。
2 楼 kuchaguangjie 2014-03-31  
持久化, 就是 存在 硬盘上, 不是在内存里. 就这么简单.
1 楼 DEMONU 2014-03-31  
持久化就是鲜肉变成冻肉,短暂存在的数据变成长久存在的

相关推荐

    Redis的持久化方案

    Redis是一种内存数据库,它支持数据的持久化,确保数据的持久性和安全性。持久化是指将内存中的数据保存到磁盘上,以便在Redis服务器重启或者系统崩溃之后,数据依然能够得以保存和恢复。Redis提供了两种持久化方案...

    sentinel-mysql规则持久化,持久化规则数据至mysql,包含数据表结构,一键启动

    MySQL 规则持久化则是 Sentinel 功能的一个重要组成部分,它确保了在系统重启或者故障恢复后, Sentinel 的规则能够被正确地加载,从而维持服务的稳定运行。 在本项目中,"sentinel-mysql规则持久化" 是一个将 ...

    IBM WebSphere MQ消息持久化

    在IBM WebSphere MQ中,消息持久化是一个重要的特性,它确保了当队列管理器发生异常时,消息数据的安全性和一致性。以下是对IBM WebSphere MQ消息持久化相关知识点的详细说明。 首先,消息持久化是指消息的可靠性...

    ios 数据持久化存储

    在iOS开发中,数据持久化是至关重要的,它允许应用程序在用户关闭应用或者设备重启后仍然保留数据。本文将深入探讨iOS中的几种主要数据持久化技术:Preference(偏好设置)、文件存储、归档、数据库(SQLite)以及...

    自己写的一个持久化层

    标题中的“自己写的一个持久化层”指的是作者创建了一个用于数据存储和检索的软件组件,类似于知名的ORM(对象关系映射)框架Hibernate。持久化层是应用程序中的一个关键部分,它负责将业务对象的数据保存到数据库中...

    一套不错的hibernate学习教程

    什么是持久化? Hiberante应用程序的结构 JDBC与Hibernate的比较 第二章 Hibernate API 目标: Hibernate API简介 在java应用hibernate步骤 Hibernate 配置文件 持久化类 创建对象-关系映射文件 ID Sessin 接口 ...

    JPA持久化简介

    Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗? 朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。

    WF 4.0 之持久化操作

    ### WF 4.0 之持久化操作 #### 概述 在工作流(WF)领域,特别是针对WF 4.0版本的理解中,“WF 4.0 之持久化操作”这一主题聚焦于如何有效地将工作流的状态保存下来,以便在后续的操作中能够继续执行。持久化操作...

    消息和主题(持久化-非持久化)分类--持久化订阅

    标题中的“消息和主题(持久化-非持久化)分类--持久化订阅”指的是在分布式消息传递系统中,特别是基于发布/订阅模型的系统中,关于消息存储和处理的两种不同策略:持久化和非持久化订阅。在这个场景下,我们将深入...

    域对象在持久化层的状态

    ### 域对象在持久化层的状态:深入解析 在软件开发中,特别是涉及数据库操作的应用场景下,理解和掌握域对象在持久化层的状态对于优化系统性能和维护数据一致性至关重要。本文将围绕“域对象在持久化层的状态”这一...

    sentinel 1.8.3持久化到nacos

    版本 1.8.3 是 Sentinel 的一个重要更新,它引入了对 Nacos 的持久化支持,使得 Sentinel 的规则可以持久化存储在 Nacos 中,方便管理和跨实例共享。 Nacos 是一个阿里巴巴开源的动态服务发现、配置管理和服务管理...

    redis持久化方式

    ### Redis持久化方式详解 Redis 是一款高性能的键值存储系统,因其卓越的读写速度、丰富的数据结构以及灵活的应用场景而备受青睐。为了保证数据的安全性和持久性,Redis 提供了两种主要的持久化机制:RDB 快照...

    sentinel 1.8 规则持久化版(源码)

    内容:已经对源码进行改造,使用push方式进行规则持久化 持久化的规则有:授权规则、降级规则、流控规则、热点规则、系统规则 其他说明:默认请求的nacos地址是127.0.0.1:8848 注意!注意!注意!:这个是源码,...

    Redis windows 测试redis持久化功能1

    Redis 是一个高性能的键值数据库,广泛应用于缓存、数据持久化等场景。在 Windows 上测试 Redis 的持久化功能,主要是确保数据在系统重启或异常情况后能够被正确地保存和恢复。以下将详细介绍如何在 Windows 环境下...

    quartz的持久化

    它的持久化功能是其重要特性之一,使得在系统重启后能够恢复先前的状态,继续执行预定的任务,保证了服务的连续性和可靠性。 Quartz 提供了多种持久化策略,包括 JDBC、JPA、Hibernate 和文本文件等。这些策略允许...

    activeMQ mysql 持久化

    标题中的“ActiveMQ MySQL 持久化”指的是在使用ActiveMQ消息中间件时,将消息数据存储到MySQL数据库中以实现数据的持久化。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,支持多种消息...

    java持久化的解决方案

    ### Java持久化的解决方案详解 #### 引言:信息载体与持久化需求 在软件工程领域,数据持久化是一项至关重要的技术,它确保了应用程序在不同会话之间或系统重启后仍能保持数据的一致性和完整性。Java作为一种广泛...

    consul(windows下持久化)

    在 Windows 操作系统环境下,Consul 的配置文件默认情况下并不具备持久化存储的特性,这意味着一旦服务器重启或遭遇意外断电,所有未被保存的配置更改将会丢失,这对服务的稳定性和可靠性构成了潜在风险。...

    深入理解持久化对象

    ### 深入理解持久化对象 #### Hibernate与持久化对象 Hibernate作为一款优秀的Java持久层框架,其设计理念强调低侵入性,这意味着在开发过程中,可以使用标准的Java对象(POJO)进行编程,无需让POJO继承特定的...

    Quartz.net 3.0.7.0数据库持久化.rar

    这个压缩包“Quartz.net 3.0.7.0数据库持久化.rar”包含了关于如何使用Quartz.NET实现任务调度的数据库持久化和集群配置的资料。Quartz.NET 3.0.7.0是该库的一个稳定版本,它提供了许多改进和新特性。 **数据库持久...

Global site tag (gtag.js) - Google Analytics