1.应用程序层次结构演变
这里本来应该有张描述应用程序结构演变的图,可是CSDN在这里上传不了,所以没有传上来.
纵观几十年的计算机应用软件的演变过程,应用程序逐渐由单层体系结构发展为多层体系结构。最初应用软件只是在大型机上的单层应用程序,大都采用文件系统存储数据。20世纪70年代,随着数据库的普及,原来的单层结构发展为双层结构。在双层结构中,实现了数据存放与应用程序的分离。但是,负责用户界面交互的代码与业务逻辑混杂在一起,一个小的系统尚可以维护但是对于企业级的应用,长期的维护就是一件十分困难的事情。因此,三层的体系结构应运而生。在三层结构中,把原来的应用程序层分成了视图层和业务逻辑层、数据库层维持不变。随着软件行业的蓬勃发展,人们感觉这样频繁的操作数据库和大量的底层代码的重复书写极大的浪费了程序人员的心血,Hibernate,Spring,等框架的应运而生了。
在Hibernate中又将原来原业务逻辑层分成了业务逻辑层和持久层。(现在主流的分层结构依然是三层结构).
2.什么是持久化? 为什么要持久化?
1.什么是持久化?
本人找了好多文章都没有找到满意的答案,最后是从孙卫琴写的《精通Hibernate:Java对象持久化技术详解》中,看到如下的解释,感觉还是比较完整的。摘抄如下:
狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作(持久化就是将有用的数据以某种技术保存起来,将来可以再次取出来应用,数据库技术,将内存数据一文件的形式保存在永久介质中(磁盘等)都是持久化的例子.)。
● 保存:把域对象永久保存到数据库。
● 更新:更新数据库中域对象的状态。
● 删除:从数据库中删除一个域对象。
● 加载:根据特定的OID,把一个域对象从数据库加载到内存。
● 查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。
2.为什么要持久化?
持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。
● 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;
● 代码重用性高,能够完成大部分数据库操作;
● 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。
http://www.cnblogs.com/cuihongyu3503319/archive/2007/12/17/1002875.html
分享到:
相关推荐
Redis是一种内存数据库,它支持数据的持久化,确保数据的持久性和安全性。持久化是指将内存中的数据保存到磁盘上,以便在Redis服务器重启或者系统崩溃之后,数据依然能够得以保存和恢复。Redis提供了两种持久化方案...
MySQL 规则持久化则是 Sentinel 功能的一个重要组成部分,它确保了在系统重启或者故障恢复后, Sentinel 的规则能够被正确地加载,从而维持服务的稳定运行。 在本项目中,"sentinel-mysql规则持久化" 是一个将 ...
#### 四、转换游离对象为持久化对象 通过`Session.update()`方法可以将游离状态的对象重新变为持久化状态,使其再次受到Session的管理。例如,当从其他地方(如序列化)恢复一个对象后,可以使用此方法将其纳入当前...
在IBM WebSphere MQ中,消息持久化是一个重要的特性,它确保了当队列管理器发生异常时,消息数据的安全性和一致性。以下是对IBM WebSphere MQ消息持久化相关知识点的详细说明。 首先,消息持久化是指消息的可靠性...
在iOS开发中,数据持久化是至关重要的,它允许应用程序在用户关闭应用或者设备重启后仍然保留数据。本文将深入探讨iOS中的几种主要数据持久化技术:Preference(偏好设置)、文件存储、归档、数据库(SQLite)以及...
标题中的“自己写的一个持久化层”指的是作者创建了一个用于数据存储和检索的软件组件,类似于知名的ORM(对象关系映射)框架Hibernate。持久化层是应用程序中的一个关键部分,它负责将业务对象的数据保存到数据库中...
### WF 4.0 之持久化操作 #### 概述 在工作流(WF)领域,特别是针对WF 4.0版本的理解中,“WF 4.0 之持久化操作”这一主题聚焦于如何有效地将工作流的状态保存下来,以便在后续的操作中能够继续执行。持久化操作...
相比之下,O/X mapping尤其是通过JAXB和Castor等工具实现的方案,通过将对象状态与结构信息共同持久化为自描述的XML文档,为Java数据持久化提供了更强大、更灵活的选项,尤其适合于需要跨应用程序共享数据或进行复杂...
- **将瞬态对象转换为持久化状态**:主要通过`save()`或`persist()`方法实现。这两个方法的主要区别在于,`save()`方法返回对象的标识符,而`persist()`方法则不返回任何值。 - **加载持久化对象**: - `load()`...
标题中的“消息和主题(持久化-非持久化)分类--持久化订阅”指的是在分布式消息传递系统中,特别是基于发布/订阅模型的系统中,关于消息存储和处理的两种不同策略:持久化和非持久化订阅。在这个场景下,我们将深入...
综上所述,Sentinel 1.8.3 持久化到 Nacos 的功能,为微服务环境下的流量控制和容错管理提供了强大而灵活的支持。结合 Spring Cloud,开发者可以更好地利用 Sentinel 的优势,提升应用的稳定性和可维护性。
在 Windows 操作系统环境下,Consul 的配置文件默认情况下并不具备持久化存储的特性,这意味着一旦服务器重启或遭遇意外断电,所有未被保存的配置更改将会丢失,这对服务的稳定性和可靠性构成了潜在风险。...
版本:1.8 内容:已经对源码进行改造,使用push方式进行规则持久化 持久化的规则有:授权规则、降级...为什么分开上传? 因为有些人需要源码二次改造,看了CSDN后台并没有发现可以重新上传资源的功能,只能再传一次。
### Redis持久化方式详解 Redis 是一款高性能的键值存储系统,因其卓越的读写速度、丰富的数据结构以及灵活的应用场景而备受青睐。为了保证数据的安全性和持久性,Redis 提供了两种主要的持久化机制:RDB 快照...
在JDO中,首先需要编写POJO,然后通过一个名为Enhancer的工具在编译后阶段对POJO的字节码进行增强,生成对应的持久化对象。这意味着JDO的转换过程发生在编译期间,而Hibernate的转换是在运行时。 Hibernate的优点...
Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗? 朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。
它的持久化功能是其重要特性之一,使得在系统重启后能够恢复先前的状态,继续执行预定的任务,保证了服务的连续性和可靠性。 Quartz 提供了多种持久化策略,包括 JDBC、JPA、Hibernate 和文本文件等。这些策略允许...
Redis 是一个高性能的键值数据库,广泛应用于缓存、数据持久化等场景。在 Windows 上测试 Redis 的持久化功能,主要是确保数据在系统重启或异常情况后能够被正确地保存和恢复。以下将详细介绍如何在 Windows 环境下...
标题中的“ActiveMQ MySQL 持久化”指的是在使用ActiveMQ消息中间件时,将消息数据存储到MySQL数据库中以实现数据的持久化。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,支持多种消息...
持久化技术广泛应用于将内存中的数据存储到关系型数据库中,除此之外还可以存储为文件、XML文档等多种形式。 #### 二、序列化定义与应用场景 **序列化**是将对象的状态转换为可以存储或传输的形式的过程。在Java中...