`

spring中如何做事务?(标准做法---集成hibernate)

阅读更多
spring中如何做事务?(标准做法---集成hibernate)
配置如下:
      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
	</bean>  
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
	    <property name="sessionFactory" ref="sessionFactory" />
	</bean>
	 
      <tx:advice  id="txAdivce" transaction-manager="transactionManager" >
    	<tx:attributes>
    		<tx:method  name="add*" propagation="REQUIRED"  />
    	    <tx:method  name="update*" propagation="REQUIRED"  />
    	    <tx:method  name="del*" propagation="REQUIRED"  />
    	    <tx:method  name="*" read-only="true"  />    	
    	</tx:attributes>    
      </tx:advice>  
   
    <aop:config>
    	<aop:pointcut id="allDao" expression="execution(* com.cs.dao.*.*(..))"  />
    	<aop:advisor advice-ref="txAdivce" pointcut-ref="allDao" />    	
    </aop:config> 

bean的配置
  
<bean id="teamDao" class="com.cs.dao.TeamDaoImpl">
    	<property name="sessionFactory" ref="sessionFactory" />  //必须要配上,因为继承自hibernateDaoSupport
    </bean>
解析:
spring和hibernate的集成
1:把hibernate的sessionFactory纳入spring的管理
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
		<property name="configLocation">
			<value>classpath:hibernate.cfg.xml</value>
		</property>
	</bean> 

2:配置好spring给我们提供的事物管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
	    <property name="sessionFactory" ref="sessionFactory" />
	</bean> 

3:配置事务的特性
 <tx:advice  id="txAdivce" transaction-manager="transactionManager" >
    	<tx:attributes>
    		<tx:method  name="add*" propagation="REQUIRED"  />
    	    <tx:method  name="update*" propagation="REQUIRED"  />
    	    <tx:method  name="del*" propagation="REQUIRED"  />
    	    <tx:method  name="*" read-only="true"  />    	
    	</tx:attributes>    
</tx:advice>  	

4:配置aop
 <aop:config>
    	<aop:pointcut id="allDao" expression="execution(* com.cs.dao.*.*(..))"  />
    	<aop:advisor advice-ref="txAdivce" pointcut-ref="allDao" />    	
    </aop:config>

   
5:Dao类的编写
   继承自HIbernateDaoSupport,调用其中的getHibernateTemplate完成数据库操作,所以需要在
   Dao的类中配置sessionFactory
  
6:
public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {
    private TeamDao teamDao ;
	 
	public void addPerson(Person p) { //在这里不用再去考虑事务的开启和关闭以及传播(这就是spring中作事务的优点所在)		
	    this.getHibernateTemplate().saveOrUpdate(p) ;
 	    teamDao.addTeam(p.getTeam()) ;
	}

	public TeamDao getTeamDao() {
		return teamDao;
	}

	public void setTeamDao(TeamDao teamDao) {
		this.teamDao = teamDao;
	}

}

总结:(以上配置做事务处理非常实用,既不要自己写sessionFactory,也不需要写与数据库之间操作的模板,只需配置即可,而且只需配制一次)

propagation="REQUIRED"
    事务的传播特性:
    1:REQUIRED:如果当前的环境中存在着一个开启了的事务,就使用当前的事务,否则开启新的事务
    2:SUPPORTS:如果当前的环境中存在着一个开启了的事务,就使用当前的事务,否则非事务的执行
    3:MANDATARY:如果当前的环境中存在着一个开启了的事务,就使用当前的事务,否则抛出异常
    4:REQUIRES_NEW:不管当前环境是不是存在事务,总是开启新的事务
    5:NOT_SUPPORTS:始终保持非事务的执行
    6:NEVER:始终保持非事务的执行,如果当前存在事务,抛出异常
    7:NEST:如果当前存在一个活动的事务,则运行在一个嵌套事务中,如果没有则按REQUIRED的方式执行
    
isolation="READ_COMMITTED"    
    事务的隔离级别:
    1:READ_UNCOMMITED:当前事务没有提交的数据也可以被其他的事务读取到
    2:READ_COMMITED:当前事务的数据必须要提交才能让其他事务读到(默认情况)
    3:REPEARED_READ:当前事务的add数据必须要提交才能让其他事务读到 ,而update数据读不到
    4:SERIALIZABLE:不并发,所有的事务都必须是串行运行  
分享到:
评论

相关推荐

    Spring与Hibernate集成---声明式事务

    总结来说,Spring与Hibernate的集成使我们可以轻松地在应用程序中管理数据访问和事务,同时保持代码的整洁和模块化。声明式事务管理让开发者专注于业务逻辑,而无需关心事务控制的细节,提高了开发效率和代码质量。...

    spring-boot 集成hibernate

    在本文中,我们将深入探讨如何将Spring Boot与Hibernate集成,并使用Druid作为数据库连接池。首先,我们需要理解这三个核心组件: 1. **Spring Boot**: 是一个由Pivotal团队提供的开源框架,它简化了创建独立的、...

    Spring与Hibernate集成

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

    Spring2.5和Hibernate3集成--学习spring aop ioc

    Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...

    Spring集成Hibernate所需jar包

    在Java企业级开发中,...不过,上述列出的jar包是Spring集成Hibernate的基本配置,能够确保基本的CRUD操作和事务管理功能正常运行。正确地引入和配置这些jar包,可以有效地提升Java企业应用的开发效率和可维护性。

    spring-hibernate 4个版本

    标题中的“spring-hibernate 4个版本”指的是四个不同阶段的Spring与Hibernate集成框架的版本。Spring是一个广泛使用的Java企业级应用开发框架,而Hibernate是一个流行的持久化框架,用于简化数据库操作。这两个库的...

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

    4. **集成Hibernate**:配置Hibernate的SessionFactory,并将其注入到业务层的DAO(数据访问对象)中,用于数据库操作。 在项目实践中,`bankmoney`可能代表了一个银行资金管理的模块,可能包含相关的DAO、Service...

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

    本篇文章将重点讨论如何在Spring框架中集成Hibernate,并探讨编程式事务管理和Spring AOP的声明式事务。 首先,让我们理解Spring与Hibernate的集成。为了整合这两个库,你需要在Spring配置文件中定义Hibernate的...

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

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - 在SSH集成项目中,需要包含各自框架的jar包,如spring-core、spring-context、spring-tx、hibernate-core、struts2-core等。 - 还需包括相关的依赖库,例如log4j、javassist、cglib等,这些是SSH框架运行所需的...

    springmvc-spring4.3-hibernate5框架整合

    标题 "springmvc-spring4.3-hibernate5框架整合" 暗示了这是一个关于集成Spring MVC、Spring 4.3和Hibernate 5的项目。这个项目可能是一个基础的Web应用开发环境,用于演示或教学如何将这三大流行Java框架协同工作。...

    DmDialect-for-hibernate4.0.zip

    在SpringBoot集成Hibernate时,通过配置`spring.jpa.hibernate.dialect`属性,指定使用DmDialect,就能让Hibernate知道如何与达梦数据库进行有效通信。这样,开发人员就可以利用Hibernate的高级特性,如懒加载、事务...

    Spring之Spring2.5集成Hibernate3.6

    这篇博客“Spring之Spring2.5集成Hibernate3.6”主要探讨了如何将两个经典的开源框架——Spring 2.5和Hibernate 3.6进行整合,以实现数据持久化的高效管理。 Spring 2.5版本是Spring框架的一个重要里程碑,它引入了...

    spring-hibernate3.jar.zip

    在标题中提到的"spring-hibernate3.jar",这是一个包含Spring和Hibernate整合的库文件,它集成了两个框架的核心功能,便于开发者快速构建项目。这个库可能包含了Spring的IoC容器、Hibernate的实体管理以及两者间的...

    spring-mybatis-hibernate-jar包

    标题中的"spring-mybatis-hibernate-jar包"指的是一个整合了Spring、MyBatis和Hibernate三个框架的Java项目打包成的JAR文件。这个JAR文件通常用于简化部署,将所有依赖集中在一起,便于在Java应用程序中使用。下面将...

    Spring集成Jpa(Hibernate实现)

    4. **Spring配置**:在Spring应用中集成JPA,首先需要在配置文件(如`applicationContext.xml`或使用Java配置类)中配置数据源、JPA供应商(这里是Hibernate)、实体扫描路径等。例如,使用Java配置可能如下: ```...

    struts2.1.8 集成 spring hibernate需要的 核心 jar

    - `hibernate-validator.jar`:提供了JSR-303/JSR-349标准的校验框架,用于数据验证。 - `cglib-nodep.jar`:Hibernate使用CGLIB进行动态代理,生成子类以实现透明的持久化。 - `dom4j.jar`:Hibernate依赖于DOM4...

    Struts-Spring-Hibernate-MySql-JDK-ibatis

    Struts2、Spring、Hibernate、JDK、MySQL和iBatis是Java开发中常见的六大核心技术,它们构建了企业级Web应用程序的基础架构。下面将详细解释这些技术及其在实际开发中的应用。 1. Struts2:Struts2是一个开源的MVC...

    Struts-Hibernate-Spring集成开发宝典最新版

    《Struts-Hibernate-Spring集成开发宝典最新版》这本书详细阐述了如何将这三个框架整合在一起,为开发者提供了全面的指导。以下是关于这些知识点的深入解析: 1. **Struts框架**:Struts是一个基于MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics