HibernateCallback使用方法_第1页
HibernateCallback使用方法_第2页
HibernateCallback使用方法_第3页
HibernateCallback使用方法_第4页
HibernateCallback使用方法_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HibernateCallback的使用方法1.5 Spring集成Hibernate到目前为止,J2EE应用程序可能很少直接以JDBC方式进行永久访问。 最终,用面向对象的编程语言访问关系数据库是令人忧郁的事。 在大多数情况下,J2EE应用程序在ORM框架中进行持久层访问,在所有ORM框架中,Hibernate以智能轻量的包受到很多开发人员的欢迎。Spring具有良好的开放性,可以与许多ORM框架良好地集成。 详细说明Spring和Hibernate的集成。1.5.1 Spring提供的DAO支持DAO模式是标准的J2EE设计模式,DAO模式的核心思想是,所有数据库访问都通过DAO组件来进行,DAO组件封装了诸如添加、删除和修改数据库等原子操作。 业务逻辑的组件依赖于DAO组件提供的数据库的原子操作,完成系统业务逻辑的实现。J2EE应用程序的体系结构有很多选择,但不管细节如何变化,J2EE应用程序大致分为三个级别表现层。业务逻辑层。数据保持层。轻量级J2EE架构以Spring IoC容器为核心,承担上下任务。 管理演示层的Action,管理业务逻辑层组件,并管理业务逻辑层所需的DAO对象。 在层之间传递值的是值对象,即JavaBean实例。图1.5正确地示出了轻量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,应用程序都可以使用一致的编程模型。图1.5轻量级J2EE应用体系结构应用程序的DAO类继承了这些抽象类,大大简化了应用程序的开发。 最大的优点是继承这些抽象类的DAO可以以一致的方式访问数据库,也就是说应用程序可以在不同的持久层访问技术之间切换。另外,Spring提供了一致的异常抽象,运行时异常地包装传统的Checked异常,因此在编码时不需要用各种技术捕获特定的异常。 Spring DAO系统的异常继承data访问exception,但data访问exception异常为Runtime,不需要显式捕获。 DataAccessException的子类包装原始异常信息,以确保应用程序捕获原始异常信息。Spring为各种数据库访问技术(包括Hibernate、JDO、TopLink、iBatis和OJB )提供DAO支持。 在Spring中,可以使用相同的访问模式、不同的数据库访问技术。 在Hibernate持续层访问技术中,Spring提供了三个工具类(或接口)来支持DAO组件的实现: HibernateDaoSupport。hibernate模板。 HibernateCallBack。1.5.2管理hibernate的会话工厂Hibernate已知,Hibernate的SessionFactory是一个内存镜像,在通过Hibernate进行持久层访问时,编译了单个数据库映射关系。 在大多数情况下,J2EE应用程序对应于数据库,即SessionFactory对象。在纯Hibernate访问中,应用程序必须手动创建SessionFactory实例,但您可以看到这不是一个好策略。 在实际的开发中,我们希望声明性地管理SessionFactory实例,并直接在配置文件中管理SessionFactory实例。 在演示Struts的PlugIn扩展点时,对该方法进行了大致的演示(请参见2.12.1节的内容)。Spring的IoC容器提供更好的管理方法,不仅可以声明性地配置会话工厂实例,而且可以利用IoC容器的角色将数据源引用注入会话工厂中。以下是在Spring配置文件中配置hibernate会话工厂的示例XML版本= 1.0 编码= gbk ?lee/mytest.hbm.XML org.hibernate.dialect。MySQLDialectupdate在Spring的IoC容器中配置了SessionFactory Bean后,会话factory Bean将在应用程序启动时加载,并且可以利用IoC容器的功能将SessionFactory Bean注入到bean中,如DAO组件。 当会话factory bean引用DAO组件时,实际的数据库访问就完成了。当然,Spring还支持访问容器数据源。 如果需要使用容器数据源,可以按如下方式修改数据源Beanjava:comp/env/jdbc/myds因此,通过声明性地管理SessionFactory实例,可以在不同的数据源之间切换应用程序。 如果应用数据库交换等持久层资源,则可以简单地修改配置文件。提示:声明性地管理SessionFactory类似于将有关数据库服务的信息放在web.xml文件中进行初始设置。 这种方案为了提供更好的自适应,在需要改变长期服务的情况下,不需要改变应用代码。1.5.3使用hibernation模板hibernate模板提供了永久层访问模板,您无需使用hibernate模板实现特定接口,只需提供对SessionFactory的一个引用就可以执行永久化操作。 SessionFactory对象通过生成参数或设置值传递。 hibernatetrate有三个构造函数:hibernate模板()。hibernate模板(org.hibernate.sessionfactorysessionfactory )。hibernate模板(org.hibernate.sessionfactorysessionfactory,boolean allowCreate )。第一个构造函数生成缺省的hibernate模板实例。 因此,在使用Hibernate- Template实例之前,可以使用方法setsessfactory (sessionfactorysessionfactory )来确定hibernate模板的sessionfactory第二个构造函数在生成时传递了SessionFactory引用。第三个构造函数。 boolean类型参数指示如果当前线程中已经存在非

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论