《深入浅出Hibernate》读书笔记1

作者:冉翔

 

第一部分 持久层

 

第一章           面向应用的持久层设计

现今的应用系统设计中,MVCModel-View-Control)作为主流系统架构模式之一,贯穿了整个设计流程。MVC中的M,也就是所谓的Model,则可以说是与业务逻辑和数据逻辑关联最为紧密地部分。而持久层作为Model层面中的主要组成,其设计的优劣必对系统的整体表现产生至关重要的影响。

 

 

1.1 持久层概述

持久(Persistence)。简单来讲,也就是把数据保存到可掉电式存储设备中供之后使用。

所谓“持久层”,也就是在系统逻辑层面上,专注于实现数据持久化的一个相对独立的领域(Domain)。

1.2 持久层设计

1.2.1        持久层设计与解耦合

 

1.2.1.1    何谓耦合,何谓解耦合

何谓耦合?通俗地讲,就是事物之间的相互关联关系。

何谓解耦合?即采用一些手段降低关联的紧密程度。

1.2.1.2    解耦合思想的自然演讲

1.2.1.3    解耦合设计的目标

·应用层解耦合――应用逻辑与数据逻辑相分离

·资源曾解耦合――逻辑结构与物力结构相分离

1.2.1.4    持久层解耦合与DAO模式

DAOData Access Object)模式实际上是两个模式的组合。即Data Accessor模式与Active Domain Object模式,其中Data Accessor模式实现了数据访问和业务逻辑的分离,而Active Domain Object模式实现了业务数据的对象化封装,一般我们将这两个模式组合使用。

DAO模式通过对业务层提供数据抽象层接口,实现了以下目标:

1.         数据存储逻辑的分离

2.         数据访问底层实现的分离

3.         资源管理和调度的分离

4.         数据抽象

Data Accessor:即将数据访问的实现机制加以封装,与数据的使用代码相分离,从外部来看,Data Accessor提供了黑盒式的数据存取接口。

Domain Object:则提供了对面向领域内对象的封装。

 

Data Accessor ObjectDAO= Data + Accessor + domain Object

 

所谓Domain Object,简单来讲就是对领域内(Domain)设计的各个数据对象,反映到代码,就是一个拥有相关属性的gettersetter方法的Java ClassJava Bean)。

1.2.1.5    DAO模式的进一步改良

· Factory模式的引入

· Proxy模式的引入

 

1.2.2        持久层设计与资源管理模式

 

1.2.2.1    Connection Pool

数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。

数据库连接池技术带来下面的优势:

1  资源重用

2  更快的系统响应速度

3  新的资源分配手段

4  统一的连接管理,避免数据库连接泄漏

·Decorator模式

  Decorator模式的主要目的是利用一个对象,透明地为另一个对象添加新的功能。

  简单来讲,就是通过一个Decorator对原有对象进行封装,同时实现与原有对象相同的接口,从而得到一个基于原有对象的,对既有接口的增强性实现。

·Dynamic Proxy模式

  严格来讲,Dynamic Proxy本身并非一种模式,只能算是Proxy模式的一种动态实现方式。

·他山之石

    ·Apache Jakarta Commons DBCP

    ·Proxool

1.2.2.2    Statement Pool

 

1.3 持久层设计与ORM

 

1.3.1        ORM概述

   ORM – Object/Relation Mapper:对象-关系型数据映射组件。

  O/R Mapping描述的是一种设计思想或者实现机制,而O/R Mapper一般指根据O/R原理设计的持久化框架,其中包含了除O/R本身之外的更多内容,如SQL自生成,事务管理,Cache管理等。

1.3.2        持久层实现类型

· 混杂模式

   这种模式的优点在于开发的迅速便捷。对于原型系统或者小型应用而言显得别具意义。但基于这种模式开发的系统,其维护性和扩展性较差,对象属性,数据库结构的变动都将直接导致业务逻辑代码的修改。

· 基于Data Class的持久层实现模式

   DAO模式就是这种模式的一种典型实现。

   在这种模式中,我们实现了业务逻辑与此曾数据结构之间的分离。Data Class作为一个相对独立的逻辑层次。较为清晰的体现了所谓持久层的概念。底层关系数据的结构变化,可以较好地屏蔽在数据类这个层次。从而避免对上层的业务逻辑造成影响。

   缺点:随着设计层次的增多,编码量的增加相当可观。相对地一种混杂模式而言,系统结构上得到较大提升的同时,项目设计和开发成本也相应增高。

· 基于现有持久层框架的实现模式

   这种模式是第二种模式的眼神。Data Class所包含的Data AccessorDomain Class数量并没有减少。

   只是把其中最为繁琐的工作――基于JDBCOR映射工作,交给第三方组建完成。

   Data Accessor中的繁琐编码工作因此得到了空前简化,而与此同时,伴随持久层框架而来的辅助工具也大大减轻了Domain Class的编码负担。

 

1.4 持久层框架概述

一个成熟的持久化框架能为我们作些什么?

· 减少乏味的代码

· 更加面向对象的设计

· 更好的性能

· 更好的移植性

 

1.5 主流持久层框架综述

· Apache OJB

· Hibernate

· iBatis

· TopLink(是Oracle的商业产品)