Spring 整合 Hibernate(1)
2009 年 07 月 19 日星期日 10:24
Spring 整合 Hibernate
时至今日,可能极少有 J2EE 应用会直接以 JDBC 方式进行持久层访问。毕竟,
用面向对象的程序设计语言来访问关系型数据库,是一件让人沮丧的事情。大部分
时候,J2EE 应用都会以 ORM 框架来进行持久层访问,在所有的 ORM 框架中,Hibernate
以其灵巧、轻便的封装赢得了众多开发者的青睐。
Spring 具有良好的开放性,能与大部分 ORM 框架良好整合。下面将详细介绍
Spring 与 Hibernate 的整合。
Spring 提供的 DAO 支持
DAO 模式是一种标准的 J2EE 设计模式,DAO 模式的核心思想是,所有的数据库
访问,都通过 DAO 组件完成,DAO 组件封装了数据库的增、删、改等原子操作。而
业务逻辑组件则依赖于 DAO 组件提供的数据库原子操作,完成系统业务逻辑的实现。
对于 J2EE 应用的架构,有非常多的选择,但不管细节如何变换,J2EE 应用都
大致可分为如下 3 层:
●表现层。Jsp struts
●业务逻辑层。Manager service spring
●数据持久层。DAO 模式--------------jdbc 或者 hibernate
● DB
轻量级 J2EE 架构以 Spring IoC 容器为核心,承上启下。其向上管理来自表现
层的 Action,向下管理业务逻辑层组件,同时负责管理业务逻辑层所需的 DAO 对象。
各层之间负责传值的是值对象,也就是 JavaBean 实例。
图 精确地描绘了轻量级 J2EE 架构的大致情形。
DAO 组件是整个 J2EE 应用的持久层访问的重要组件,每个 J2EE 应用的底层实
现都难以离开 DAO 组件的支持。Spring 对实现 DAO 组件提供了许多工具类,系统的
DAO 组件可通过继承这些工具类完成,从而可以更加简便地实现 DAO 组件。
Spring 的 DAO 支持,允许使用相同的方式、不同的数据访问技术,如 JDBC、
Hibernate 或 JDO。Spring 的 DAO 在不同的持久层访问技术上提供抽象,应用的持
久层访问基于 Spring 的 DAO 抽象。因此,应用程序可以在不同的持久层技术之间切
换。
Spring 提供了一系列的抽象类,这些抽象将被作为应用中 DAO 实现类的父类。
通过继承这些抽象类,Spring 简化了 DAO 的开发步骤,能以一致的方式使用数据库
访问技术。不管底层采用 JDBC、JDO 或 Hibernate,应用中都可采用一致的编程模
型。
图 轻量级 J2EE 应用架构
应用的 DAO 类继承这些抽象类,会大大简化应用的开发。最大的好处是,继承
这些抽象类的 DAO 能以一致的方式访问数据库,意味着应用程序可以在不同的持久
层访问技术中切换。
除此之外,Spring 提供了一致的异常抽象,将原有的 Checked 异常转换包装成
Runtime 异常,因而,编码时无须捕获各种技术中特定的异常。Spring DAO 体系中
的异常,都继承 essException,而 essException 异常是 Runtime
的,无须显式捕捉。通过 essException 的子类包装原始异常信息,从而保
证应用程序依然可以捕捉到原始异常信息。
Spring 提供了多种数据库访问技术的 DAO 支持,包括 Hibernate、JDO、TopLink、
iBatis、OJB 等。Spring 可以使用相同的访问模式、不同的数据库访问技术。就
Hibernate 的持久层访问技术而言,Spring 提供了如下 3 个工具类(或接口)来支
持 DAO 组件的实现:
● HibernateDaoSupport。
● HibernateTemplate。
● HibernateCallBack。//
//通过 spring 管理 hibernnate 的 sessionfcactory
管理 Hibernate 的 SessionFactory
前面介绍 Hibernate 时已经知道,在通过 Hibernate 进行持久层访问时,
Hibernate 的 SessionFactory 是一个非常重要的对象,它是单个数据库映射关系编
译后的内存镜像。大部分情况下,一个 J2EE 应用对应一个数据库,也即对应一个
SessionFactory 对象。
【专题技术】Spring整合Hibernate 来自淘豆网www.taodocs.com转载请标明出处.