数据持久化

1.什么是持久化?

找了好多文章都没有找到满意的答案,最后是从孙卫琴写的《精通Hibernate:Java对象持久化技术详解》中,看到如下的解释,感觉还是比较完整的。摘抄如下:

狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。

     保存:把域对象永久保存到数据库。

     更新:更新数据库中域对象的状态。

     删除:从数据库中删除一个域对象。

     加载:根据特定的OID,把一个域对象从数据库加载到内存。

     查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。

2.为什么要持久化?

持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。

● 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;

● 代码重用性高,能够完成大部分数据库操作;

● 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。\

据持久化对象的基本操作有:保存、更新、删除、查询等。

    #############################################################################


之前就听说过数据持久化操作这类的词,虽然使用过一点点相关的内容,比如Hibernate中的session这个事物管理器,但一直不理解数据持久化的含义和原理方面,所以在查找了一定的资料后,我总结出了以下内容。

  • 什么是持久化呢?

  持久化的含义就是把内存中的数据(比如内存中的对象——用对象来封装数据)保存到可永久保存的存储设备或关系型数据库中(常见关系型数据库有:mysql,oracle,sqlserver等)。那么持久层的定义也就很明显了,持久层就是在某个系统中专门实现数据持久化的一个逻辑层面,将数据使用者与数据实体相关联——对象数据映射。

  • 什么是对象数据映射呢?

  ORM-Object/Relational Mapper——“对象-关系型数据库映射组件”,即在面向对象开发语言(比如java)中的对象与关系型数据库之间建立映射。这就要求需要使用面向对象的开发语言和关系型数据库进行开发。

  备注:建模领域中的 ORM 为Object/Role Modeling(对象角色建模)。另外这里是“O/R Mapper”而非“O/R Mapping”。相对来讲,O/R Mapping 描述的是一种设计思想或者实现机制,而 O/R Mapper指以O/R原理设计的持久化框架(Framework),包括 O/R机制还有 SQL自生成,事务处理,Cache管理等。

  所以,综合以上的内容可以大致这样理解:数据持久化就是一种操作对象和关系型数据库之间联系的机制。用比较官方的语言来说,数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。

  在这块我再强行举个例子,比如使用过mvc框架的同学,通过对配置文件(如:servletcontext)等内容的更改,可以让我们方便的链接到不同的数据库,并且可以让我们方便的将model对象与数据库进行绑定或者说是映射,然后可以通过一些ORM组件,比如Hibernate,可以方便的对数据库进行增删改查等操作,不用写很多的sql语句,直接通过组件就可以自动生成。

  • 使用数据持久化的好处:
  1. 持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。
  2. 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;
  3. 代码重用性高,能够完成大部分数据库操作;
  4. 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码
  • 为什么要做持久化和ORM设计:

  在目前的企业应用系统设计中,MVC,即 Model(模型)- View(视图)-Control(控制)为主要的系统架构模式。MVC 中的Model 包含了复杂的业务逻辑和数据逻辑,以及数据存取机制(如 JDBC的连接、SQL生成和Statement创建、还有ResultSet结果集的读取等)等。将这些复杂的业务逻辑和数据逻辑分离,以将系统的紧耦合关系转化为松耦合关系(即解耦合),是降低系统耦合度迫切要做的,也是持久化要做的工作。MVC 模式实现了架构上将表现层(即View)和数据处理层(即Model)分离的解耦合,而持久化的设计则实现了数据处理层内部的业务逻辑和数据逻辑分离的解耦合。而 ORM 作为持久化设计中的最重要也最复杂的技术,也是目前业界热点技术。

简单来说,按通常的系统设计,使用 JDBC 操作数据库,业务处理逻辑和数据存取逻辑是混杂在一起的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值