Hibernate的持久层访问必须按如下步骤进行:
(1)创建Configuration实例
(2)创建SessionFactory实例
(3)创建Session实例
(4)打开事务
(5)开始持久化访问
(6)提交事务
(7)如果遇到异常,回滚事务
(8)关闭Session
在HQL查询一节,已经采用HibernateUtils工具类封装部分过程。但依然不够简洁,需要通过代码显式地打开Session,显式地开始事务,然后关闭事务,关闭Session。而Hibernate提供更简单的方式操作持久层,无须显式地打开Session,无须在代码中执行任何的事务操作语句。
对Hibernate的简化,还基于Spring对异常处理的简化。底层数据库异常几乎都不可恢复,强制处理底层数据库几乎没有任何意义,但传统JDBC数据库访问的异常都是checked异常,必须使用try...catch块处理。
Spring包装了Hibernate异常,转换到DataAccessException继承树内,所有DataAccessException全部是runtime异常,并不强制捕捉。归纳起来,Spring对Hibernate的简化主要有如下几个方面:
q 基于依赖注入的SessionFactory管理机制。SessionFactory是执行持久化操作的核心组件。传统Hibernate应用中,SessionFactory必须手动创建;通过依赖注入,代码无须关心SessionFactory,SessionFactory的创建,维护由BeanFactory负责管理。
q 更优秀的Session管理机制。Spring提供“每事务一次Session”的机制,该机制能大大提高系统性能,而且Spring对Session的管理是透明的,无须在代码中操作Session。
q 统一的事务管理。无论是编程式事务,还是声明式事务,Spring都提供一致的编程模型,无须繁琐的开始事务,显式提交、回滚。如果使用声明式事务管理,事务管理逻辑与代码分离,事务可在全局事务和局部事务之间切换。
q 统一的异常处理机制。不再强制开发者在持久层捕捉异常,持久层异常被包装成DataAccessException异常的子类,开发者可以自己决定在合适的层处理异常,将底层数据库异常包装成业务异常。
q HibernateTemplate支持类。HibernateTempate能完成大量Hibernate持久层操作,这些操作大多只需一行代码,非常简洁
Spring中使用Hibernate有两种方法:HibernateTemplate和HibernateInteceptor
相信使用过Spring + Hibernate开发过的人,在写DAO的时候都使用过Spring的HibernateDaoSupport类,然后在实现的时候就可以很轻松的使用getHibernateTemplate()方法之后就可以调用save()、delete()、update()等Hibernate的Session的操作,很简单。比如:
getHibernateTemplate().save(user);
这样一句话在我们没有Spring的时候就必须使用如下的代码才能完成:
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
HibernateUtil.colseSession();
这里还省去了异常处理,同时使用了HibernateUtil类来简化从SessionFactory获取Session,以及关闭Session等处理
分享到:
相关推荐
ssh整合,针对spring整合hibernate代码,示例代码,教程。
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!
Spring整合Hibernate的所有jar包,辛苦整理两个小时,给大家分享出来。 一共27个包
这是使用spring整合hibernate、struts时所要用到的核心jar包,洗完对大家有帮助
spring整合hibernate所用相关jar包,适合初学者
spring整合hibernate的所需jar包,很全的!
Spring整合Hibernate配置测试示例
这里的jar包只是说Spring自带的关于Hibernate的jar包,即这四个jar包: hibernate3.jar, hibernate-annotations.jar, hibernate-entitymanager.jar hibernate-commons-annotations.jar 因为我原来下载了一个,但是...
spring整合Hibernate学习笔记.docx spring整合Hibernate学习笔记.docx
在创建ssh或sh项目中必不可少的jar包引入,提供项目的依赖。
Spring+hibernate整合源代码 结束Sping+hibernate 的使用方法 包括演示示例
javaweb通过Spring整合Hibernate和Struts2实现简单的登录
Spring整合hibernate的实例
Spring框架整合Hibernate框架,为大家提供一个学习案例.
spring整合hibernate与struts2所需jar包
spring-hibernate.jar
6.5 Spring整合Hibernate 6.6 Spring提供的DAO支持 6.5.2 管理Hibernate的SessionFactory 6.5.3 使用HibernateTemplate 6.5.4 使用HibernateCallBack 6.5.6 使用IoC容器组装各种组件 6.5.7启动web容器读取xml配置...
spring整合hibernate hao