数据持久化的相关学习心得

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

  • 什么是持久化呢?

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

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

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

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

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

  在这块我再强行举个例子,好比使用过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 做为持久化设计中的最重要也最复杂的技术,也是目前业界热点技术。mvc

简单来讲,按一般的系统设计,使用 JDBC 操做数据库,业务处理逻辑和数据存取逻辑是混杂在一块儿的。oracle

相关文章
相关标签/搜索