`
hz_chenwenbiao
  • 浏览: 1008008 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate单独事务与纳入spring旗下的事务管理方式

阅读更多

Hibernate要开启事务,然后再进行数据库的操作,最后提交事务,这过程都是要我们手写的,而加入spring后,那么事务的开启关闭等就可以交给spring来管理,可以在spring配置文件里写好如下配置:

 

 

<!-- 要用的数据库的访问操作,即要开启事务来处理业务时,下面的transactionManager就必须配置,而若只用spring那么可以直接配下一个"启动spring注解功能 " -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!--启动spring注解功能-->
	<tx:annotation-driven transaction-manager="transactionManager"
		proxy-target-class="true" />
 

在要用到事务的地方(也就是工进行数据库的操作地方)加入开启事务支持:@Transactional

这样做后,我们就可以直接使用数据库操作,而不用我们自己手工开关事务了。

 

HibernateDaoSupport也是由spring提供给Hibernate的对数据访问的工具类,

该类主要提供了两个方法: 

public final HibernateTemplate getHibernateTemplate() 
public final void setSessionFactory(SessionFactory sessionFactory) 

 
其中,setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了配置在Spring中的SessionFactory实例,getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,再生成HibernateTemplate来完成数据库的访问。 

典型的继承HibernateDaoSupport的DAO代码如下:

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{ 
public void save(Users transientInstance) { 
log.debug("saving Users instance"); 
try { 
getHibernateTemplate().save(transientInstance); 
log.debug("save successful"); 
} catch (RuntimeException re) { 
log.error("save failed", re); 
throw re; 
} 
} 
……………… 
} 

 

 
实际上,DAO的实现依然借助了HibernateTemplate的模板访问方式,只是,HibernateDaoSupport将依赖注入SessionFactory的工作已经完成,获取HibernateTemplate的工作也已经完成。注意,这种方法须在Spring的配置文件中配置SessionFactory:

<!-- 下面应该是表示使用AnnotationConfiguration配置和生成SessionFactory,并且要指明hibernate配置文件的位置 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
		<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
	</bean>

 
在继承HibrnateDaoSupport的DAO实现里,Hibernate Session的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。 

 

 

 

hibernate的事务管理请见下一篇。

分享到:
评论

相关推荐

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    **Spring与Hibernate集成** 1. **配置**: 配置Spring的`LocalSessionFactoryBean`,指定Hibernate的相关属性,如配置文件、实体类包等,生成SessionFactory。 2. **依赖注入**: 将SessionFactory注入到需要的地方...

    spring mvc+hibernate实现事务管理(配置文件版)

    本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...

    spring hibernate 事务管理学习笔记(二)

    声明式事务管理则更符合面向切面编程(AOP)的思想,通过配置或注解的方式定义事务边界,使得业务代码与事务逻辑解耦,更加简洁易用。 在Spring中,我们可以使用`@Transactional`注解来声明事务。这个注解可以应用...

    spring hibernate 事务管理学习笔记(一)

    本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...

    Spring Hibernate事务实例

    在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全面的后端应用...这个实例将帮助开发者更好地理解和实践Spring与Hibernate的集成,以及如何有效地管理事务,确保应用程序的数据一致性。

    spring3,hibernate4 配置声明式事务管理(annotation方式)

    当我们需要在应用程序中进行事务管理时,Spring提供了一种声明式的方式,使得事务配置更为简洁。本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和...

    spring整合hibernate实现事务处理

    在IT行业中,Spring框架与Hibernate框架的整合是常见的企业级应用开发模式,特别是在Java领域。SSH,即Struts、Spring和Hibernate,曾是流行的一种Java Web开发栈。本篇文章将详细探讨如何通过Spring整合Hibernate来...

    Hibernate缓存与spring事务详解

    在实际应用中,Spring的事务管理与Hibernate的缓存相结合,可以提供高效、一致的数据操作体验。例如,通过Spring事务确保在一个事务内对多个对象的操作要么全部成功,要么全部失败,同时Hibernate的缓存减少对数据库...

    声明式事务控制spring+hibernate集成

    当Spring与Hibernate集成时,Spring可以负责事务的管理,而Hibernate则专注于数据持久化。 在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate...

    Spring与Hibernate集成

    **Spring与Hibernate集成详解** 在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而...

    在Spring中配置Hibernate事务

    在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...

    Spring+Hibernate注解事务实例

    本实例将深入探讨如何结合Spring的注解声明式事务管理与Hibernate的数据访问技术,构建一个完整的事务处理系统。 Spring框架以其灵活的依赖注入(DI)和面向切面编程(AOP)闻名,它允许开发者将事务管理从业务逻辑...

    Spring Hibernate 事务处理 详细说明

    本篇文章将深入探讨Spring与Hibernate整合下的事务管理,帮助开发者理解并掌握这一关键知识点。 首先,Spring框架提供了声明式事务管理,这是通过AOP(Aspect-Oriented Programming,面向切面编程)实现的。在...

    spring hibernate mysql 事务实例

    在Spring与Hibernate的结合下,MySQL的事务控制可以通过设置不同的隔离级别(如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)来优化并发性能和避免数据竞争问题。 在实际开发中,我们还需要...

    spring mvc+hibernate 实现事务管理(全注解版)

    5. **异常与事务回滚**: 如果在@Transactional注解的方法中抛出未检查异常(继承自RuntimeException的异常)或者在@Transactional注解中明确列出的检查异常,Spring会自动回滚事务。否则,事务将在方法正常结束时...

    Spring事务管理Demo

    2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离,降低了代码的耦合度。`@Transactional`注解可以应用于方法级别,表示该...

    spring hibernate,spring jdbc事务管理

    两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...

    spring3+hibernate4配置声明式事务管理(annotation方式)

    5. **配置Spring和Hibernate**:在Spring 3中,我们需要配置Hibernate SessionFactory,并将其与Spring的事务管理器相结合。这通常通过XML配置文件或Java配置类完成。同时,需要为数据源、SessionFactory和事务管理...

    第二部分spring+hibernate+jta 分布式事务Demo

    在事务管理方面,Spring提供了一种声明式和编程式的事务管理方式,使得开发者能够方便地控制事务的边界。 2. **Hibernate**:这是一个流行的ORM(对象关系映射)框架,用于简化数据库操作。它允许开发者通过Java...

Global site tag (gtag.js) - Google Analytics