应用程序的分层体系结构
随着计算机应用软件的发展应用程序逐渐由单层体系结构发展为多层体系结构其中三层结构是目前典型的一种应用软件结构如图左
表述层提供与用户交互的界面如GUI(图形用户界面)web页面等
业务逻辑层负责各种业务逻辑直接访问数据库提供对业务数据的保存更新删除和查询操作
数据库层负责存放管理应用的持久性业务数据
三层结构的特点是所有下层向上层提供调用的接口具体实现细节对上层透明层与层之间存在自上而下的依赖关系即上层会访问下层的API但下层不依赖于上层
持久化层(如图右)
()什么叫持久化?
在图右中分离出的持久化层封装了数据访问细节为业务逻辑层提供了面向对象的API
持久(Persistence)即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)持久化的主要应用是将内存中的数据存储在关系型的数据库中当然也可以存储在磁盘文件中XML数据文件中等等
()什么叫持久层?
持久层(Persistence Layer)即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面将数据使用者和数据实体相关联
()为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的操作当大量用户同时直接访问数据库的时候效率将非常低如果将数据持久化就不需要每次从数据库读取数据直接在内存中对数据进行操作这样就节约了数据库资源而且加快了系统的反映速度
增加持久化层提高了开发的效率使软件的体系结构更加清晰在代码编写和系统维护方面变得更容易特别是在大型的应用里边会更有利同时持久化层作为单独的一层人们可以为这一层独立的开发一个软件包让其实现将各种应用数据的持久化并为上层提供服务从而使得各个企业里做应用开发的开发人员不必再来做数据持久化的底层实现工作而是可以直接调用持久化层提供的API
()目前在持久化层领域实现模式有以下几种
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式
D JDO模式
E CMP模式
ORM介绍
ORM(Object Relational Mapping)即对象关系映射
指以O/R原理设计的持久化框架(Framework)包括 O/R机制SQL自生成事务处理和Cache管理等
ORM的实现思想就是将关系数据库中表的数据映射成为对象以对象的形式展现这样开发人员就可以把对数据库的操作转化为对这些对象的操作因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作
常用的ORM中间件有
Apache OJB ()
Cayenne ()
Jaxor ()
Hibernate ()
iBatis ()
jRelationalFramework ()
mirage ()
SMYLE ()
TopLink ()
其中 Hibernate 的轻量级 ORM 模型逐步确立了在 Java ORM 架构中领导地位甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 Java ORM 工业标准而且其中的许多设计均被 JEE 标准组织吸纳而成为最新 EJB 规范的标准
二 Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案 它是一种自由开源的软件它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去为面向对象的领域模型到传统的关系型数据库的映射提供了一个使用方便的框架
三 Hibernate的作用
Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射)还提供数据查询和获取数据的方法可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来无论是从设计草案还是从一个遗留数据库开始开发人员都可以采用Hibernate
四 Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate可以应用在任何使用JDBC的场合它既可以在Java的客户端程序使用也可以在Servlet/JSP的Web应用中使用最具革命意义的是Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的JEE架构中取代CMP完成数据持久化的重任
五 Hibernate API简介
Hibernate API中的接口可以分为以下几类
() 提供访问数据库的操作的接口包括sessionTransactionQuery接口
() 用于配置Hibernate的接口Configuration
() 间接接口使应用程序接受Hibernate内部发生的事件并作出相关的回应包括InterceptorLifecycleValidatable
() 用于扩展Hibernate功能的接口如UserTypeCompositeUserTypeIdentifierGenerator接口
Hibernate内部还封装了JDBCJTA(Java Transaction API)和JNDI(Java Naming And Directory Interface)其中JDBC提供底层的数据访问操作只要用户提供了相应的JDBC驱动程序Hibernate可以访问任何一个数据库系统JTA和JNDI使Hibernate能够和JEE应用服务器集成
Hibernate的核心接口框图
六 Hibernate的优缺点
()优点
aHibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性
bHibernate 的性能非常好因为它是个轻量级框架映射的灵活性很出色
c 它支持各种关系数据库从一对一到多对多的各种复杂关系
()缺点
Hibernate限制您所使用的对象模型例如一个持久性类不能映射到多个表