`
suhuanzheng7784877
  • 浏览: 704282 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47749
社区版块
存档分类
最新评论

Spring3配置声明式事务

阅读更多

1.       配置Spring3声明式事务

Spring3中配置声明式事务比早期版本显得更加简便。只需要几行配置文件+注解就可以实现面向切面的AOP事务

2.       配置文件

Spring的配置如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.0.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
	default-autowire="byName">

	<!-- 配置Spring上下文的注解 -->
	<context:annotation-config />

	<!-- 配置DAO类 -->
	<bean id="persondao" class="impl.PersonDAOImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 事务管理配置 -->
	<!-- 配置事务管理开始 -->
	<bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<tx:annotation-driven transaction-manager="txManager" />
 在配置文件中并没有出现像以前版本的事务传播和隔离级别,也就是类似如下配置

<!-- 配置事务的传播特性 --> 
<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
<tx:attributes> 
<tx:method name="add*" propagation="REQUIRED"/> 
<tx:method name="del*" propagation="REQUIRED"/> 
<tx:method name="modify*" propagation="REQUIRED"/> 
<tx:method name="*" read-only="true"/> 
</tx:attributes> 
</tx:advice>

 因为可以通过注解@Transactional完成事务传播、事务隔离的功能。

3.       DAO代码

DAO实现类代码如下

package impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;

import pojo.Test;

@Transactional
public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {

	public void save(Test test) {
		this.getHibernateTemplate().saveOrUpdate(test);
		Test test2 = new Test();
		test2.setId(3);
		test2.setName("3");
		this.getHibernateTemplate().saveOrUpdate(test2);
		
		throw new RuntimeException("主键重复");
	}

}

 使用注解将此DAO实现类的所有方法进行了事务拦截,当遇到运行是异常时,事务回滚。不提交到数据库。

当然可以指定单一原子方法进行隔离,方法可以指定

 

	@Transactional(propagation=Propagation.NOT_SUPPORTED)
	@Transactional(propagation=Propagation.MANDATORY)
	@Transactional(propagation=Propagation.NESTED)
	@Transactional(propagation=Propagation.REQUIRED)
	@Transactional(propagation=Propagation.REQUIRES_NEW)
	@Transactional(propagation=Propagation.SUPPORTS)

 JTA标准的事务隔离传播一样,具体参考

http://suhuanzheng7784877.iteye.com/blog/908382

之后在Service层可以进行原子操作的业务整合。

分享到:
评论

相关推荐

    Spring3配置声明式事务[借鉴].pdf

    【Spring3 声明式事务配置】 Spring3 提供了一种更为简洁的方式来配置声明式事务,这使得在处理事务管理时,开发者可以更专注于业务逻辑。声明式事务管理是基于面向切面编程(AOP)的一种实现,它允许开发者通过在...

    spring声明式事务配置

    根据提供的信息,我们可以深入探讨Spring框架中的声明式事务配置及其多种实现方式。声明式事务管理是一种简化事务管理的方式,它允许开发人员通过配置而非编程来指定事务边界,从而减少了代码的复杂性并提高了可维护...

    spring+mybatis的声明式事务

    在Spring中,声明式事务主要通过AOP(面向切面编程)实现,它允许我们在不修改业务代码的情况下,通过XML配置或Java配置,以及注解来控制事务的边界。 3. **XML配置事务** 在Spring的XML配置文件中,可以通过`...

    Spring使用XML配置声明式事务

    在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过XML配置或注解来定义事务边界,而无需在业务逻辑代码中显式地调用开始、提交或回滚事务的方法。这篇博文"Spring使用XML配置...

    Spring声明式事务配置管理方法

    Spring声明式事务配置管理方法

    Spring源代码解析(六):Spring声明式事务处理.doc

    在 Spring 中,声明式事务处理可以通过配置 TransactionProxyFactoryBean 来实现。TransactionProxyFactoryBean 是一个 FactoryBean,它可以创建一个代理对象,该代理对象可以拦截业务方法的调用,并对事务进行管理...

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

    本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和Hibernate的依赖库。这通常通过Maven或Gradle等构建工具完成,确保添加了相应的依赖项。 接着,...

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

    本主题将深入探讨Hibernate的编程式事务管理和Spring AOP的声明式事务管理,以及两者如何在实际项目中集成使用。 **Hibernate编程式事务管理** Hibernate作为流行的ORM(对象关系映射)框架,提供了对JDBC事务的...

    spring声明式事务处理demo

    Spring框架的声明式事务处理是其企业级应用中的核心特性之一,它允许开发者通过配置来管理事务,而无需在代码中显式地控制事务的开始、提交和回滚。这种方式极大地提高了代码的可读性和可维护性。在这个"spring声明...

    Spring声明式事务处理

    文件名为`Spring声明式事务处理-1.mht`到`Spring声明式事务处理-5.mht`,通过阅读这些文件,你将能够深入理解Spring声明式事务处理的各个方面,包括配置、使用场景、最佳实践以及常见问题的解决方法。

    spring+ibatis声明式事务Demo_

    通过这个Demo,开发者可以学习如何在Spring与iBatis集成的环境中配置和使用声明式事务,理解事务的ACID属性(原子性、一致性、隔离性和持久性)如何在实际项目中得到保障。此外,这也是理解和实践Spring AOP以及依赖...

    spring声明式事务管理配置方式

    - 在传统的Spring配置中,你可以通过`&lt;tx:annotation-driven&gt;`元素启用声明式事务管理,并指定事务管理器。例如: ```xml &lt;bean id="transactionManager" class="org.springframework.jdbc.datasource....

    spring编程式事务与声明式事务详解

    Spring 提供了多种方式来实现声明式事务管理,例如使用 @Transactional 注解或使用 XML 配置文件。 总结 本文通过详细分析 Spring 的编程式事务管理及声明式事务管理,帮助读者理解事务管理的重要性和实现方式。...

    Spring 2.5整合iBATIS 2.3并使用Spring的声明式事务管理

    本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...

    spring+ibatis声明式事务Demo

    当我们谈论"spring+ibatis声明式事务Demo"时,我们关注的是如何在Spring框架中利用iBatis实现声明式事务管理。 声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、...

    Spring使用TransactionProxyFactoryBean声明式事务配置实例

    在Spring框架中,声明式事务管理是通过元数据(如XML配置或注解)来定义事务边界,使得开发者无需在业务代码中显式调用事务管理API,即可实现事务的控制。TransactionProxyFactoryBean是Spring提供的一种工具,用于...

    全面分析 Spring 的编程式事务管理及声明式事务管理

    1. **基于XML的声明式事务管理**: 在Spring的配置文件中,我们可以通过`&lt;tx:advice&gt;`、`&lt;aop:config&gt;`等元素定义事务的边界,指定哪些方法需要在事务中运行。 2. **基于注解的声明式事务管理**: 使用@Transactional...

Global site tag (gtag.js) - Google Analytics