`
ch_space
  • 浏览: 111706 次
  • 性别: Icon_minigender_1
  • 来自: 农村进城务工人员
社区版块
存档分类
最新评论

Spring2.x事务管理--@Transactional

阅读更多
前面在Hibernate中曾介绍了使用spring1.x的声明式事务管理(http://ch-space.iteye.com/blog/380419),还是感觉xml文件的配置比较繁琐,这里介绍一下spring2.x基于注解的声明式事务。
这里给出一个完整的例子:对Users类的一个增加操作,测试异常抛出时回滚事务。
所用的框架:Spring2.0+Hibernate3.1
Dao层:
//Users类操作的接口
public interface UserDao {
	public void addUser(Users u);
}
//Dao接口对应的实现类
public class UserDaoImpl extends HibernateDaoSupport implements UserDao{

	public void addUser(Users u) {
		super.getHibernateTemplate().save(u);
	}
}

Service层:
//业务接口
public interface UserService {
	public void addUser(Users u);
}

//业务实现

@Transactional//对声明式事务进行注解
public class UserServiceImpl implements UserService {
	//注入Dao接口	
	private UserDao uDao;
	public void setUDao(UserDao dao) {
		uDao = dao;
	}
	public void addUser(Users u) {
		this.uDao.addUser(u);
		throw new RuntimeException("exception occurred");//抛出异常,测试是否回滚
	}
}

applicationContext.xml配置文件
<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
                     http://www.springframework.org/schema/beans/spring-beans.xsd 
                     http://www.springframework.org/schema/tx 
                     http://www.springframework.org/schema/tx/spring-tx.xsd"> 
	...
	<bean id="hibernateTemplate"
		class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="hibernateDaoSupport"
		class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
		abstract="true">
		<property name="hibernateTemplate">
			<ref bean="hibernateTemplate" />
		</property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	<!--开启事务-->
	<tx:annotation-driven transaction-manager="transactionManager" />

	<bean id="UserService" class="com.spring.service.UserServiceImpl">
		<property name="UDao">
			<bean class="com.spring.dao.UserDaoImpl"
				parent="hibernateDaoSupport" />
		</property>
	</bean>
	
</beans>

注意这里需要引入<tx:>命名空间xmlns:tx="http://www.springframework.org/schema/tx"
测试类:
public class Main {
	public static void main(String[] args) {
		ApplicationContext a=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService us=(UserService)a.getBean("UserService");
		Users u=new Users();
		u.setName("spring-hinernate");
		us.addUser(u);
	}


运行结果:
Hibernate: insert into test.chen.users (name) values (?) select scope_identity()
Exception in thread "main" java.lang.RuntimeException: exception occurred
	at com.spring.service.UserServiceImpl.addUser(UserServiceImpl.java:16)
	...
	at $Proxy6.addUser(Unknown Source)
	at Main.main(Main.java:18)


查看数据库,事务异常时自动回滚了。
关于更深入的事务传播属性注解(只读,新事务,挂起等),可参考Spring Reference,这里不再详细介绍。
分享到:
评论

相关推荐

    spring3.x-framework-reference.rar

    Spring的事务管理支持编程式和声明式两种方式,声明式事务管理通过@Transactional注解实现,使事务控制变得简单易用。 7. **MVC框架** Spring MVC是Spring提供的Web开发框架,它提供了模型-视图-控制器架构,支持...

    Spring3.X @MVC - (一)重要的配置文件

    6. **`&lt;tx:annotation-driven&gt;`**: 如果你的应用程序需要事务管理,这个元素会启用对@Transactional注解的支持,使得事务可以在方法级别进行声明。 7. **AOP配置**:Spring的AOP支持可以通过定义pointcuts和advises...

    《精通Spring 2.x-企业应用开发详解》chapter22.rar

    《精通Spring 2.x-企业应用开发详解》的第22章主要涵盖了Spring框架在企业级应用中的高级特性和实践技巧。Spring作为一个轻量级、全面的Java应用程序框架,为开发者提供了众多强大的功能,包括依赖注入(DI)、面向...

    精通Spring2.x-企业应用开发详解

    《精通Spring2.x-企业应用开发详解》是一本深度解析Spring框架2.x版本的权威教程,旨在帮助读者全面掌握Spring在企业级应用中的核心技术和最佳实践。第二章源代码的提供,让读者能够通过实际操作进一步理解理论知识...

    spring4.x源码

    在这个源码包中,我们可以深入探究Spring的核心机制,理解它如何实现依赖注入、AOP(面向切面编程)、事务管理等关键功能。 首先,让我们关注依赖注入(Dependency Injection,简称DI)。Spring通过DI帮助我们解耦...

    Spring3.X编程技术与应用

    在Spring3.X中,使用@Transactional注解可以非常容易地将事务管理应用于类和方法级别。 7.集成测试: Spring3.X对集成测试提供了良好的支持。Spring Test框架与JUnit和TestNG等测试库协同工作,允许开发者在测试...

    spring-framework-3.2.x.zip

    Spring 3.2.x中的AOP模块提供了强大的切面编程支持,可以用于日志记录、事务管理、权限控制等功能。通过`@Aspect`、`@Before`、`@After`等注解,开发者可以轻松定义和应用切面,实现代码的解耦和模块化。 三、数据...

    Spring-4.3源码

    此外,Spring的事务管理器如`PlatformTransactionManager`可以适配多种数据库事务管理机制。 Spring 4.3还引入了对Java EE 7的支持,包括WebSocket、JMS 2.0、JPA 2.1等。`WebSocketMessageBrokerConfigurer`帮助...

    Springboot2.X实现tx-manager分布式事务处理

    在分布式系统中,事务的一致性是非常关键的,Spring Boot 2.x 版本通过与不同的分布式事务管理器集成,如LCN(Local Transaction Coordinator),可以实现高效的分布式事务处理。 Spring Boot 2.x 集成LCN分布式...

    精通Spring 4.x 企业应用开发实战高清版

    在事务管理方面,Spring 4.x提供了声明式事务管理,让开发者无需编写复杂的事务控制代码。书中会讲解如何配置事务管理器,以及@Transactional注解的使用方法,帮助读者理解事务的ACID属性和隔离级别。 Spring AOP...

    《精通Spring2.x-企业应用开发详解》源代码

    《精通Spring2.x-企业应用开发详解》这本书深入剖析了Spring框架的核心特性和在实际企业应用中的使用方式。源代码涵盖了第二至第六章的内容,这五个章节分别涉及了Spring的基础、依赖注入、AOP(面向切面编程)、...

    spring3.x企业应用实战开发-源码

    2. **AOP(面向切面编程)**:Spring的AOP模块提供了在运行时织入切面的能力,用于日志记录、事务管理、性能监控等。源码中会展示如何定义切面、通知类型以及如何配置AOP代理。 3. **Bean的生命周期管理**:Spring...

    Spring3.x知识点总结

    - 支持编程式和声明式事务管理,@Transactional注解实现声明式事务。 6. **Spring对其他技术的整合** - 集成Hibernate、MyBatis等ORM框架,简化持久层开发。 - 支持JSF、Struts、Portlet等多种MVC框架。 - 集成...

    Spring2.x对事务的管理(AOP)

    在Spring 2.x框架中,事务管理是其核心特性之一,尤其与面向切面编程(AOP)结合使用时,可以实现高效的事务控制。本文将深入探讨Spring如何通过AOP来实现事务管理,并以`applicationContext.xml`配置文件为例,阐述...

    spring3.x源码

    Spring的事务管理可以做到声明式,即通过`@Transactional`注解在方法级别声明事务边界。 在数据访问方面,Spring提供了强大的支持,包括JDBC抽象层、ORM(Object-Relational Mapping)集成,如Hibernate、MyBatis等...

    精通Spring4.x+企业应用开发实战 配套光盘(源码+资源).rar

    - **声明式事务管理**:基于AOP,通过@Transactional注解在方法级别声明事务边界。 5. **Spring Boot** - **快速启动**:Spring Boot简化了Spring应用的初始设置,通过自动配置和起步依赖,让项目快速启动运行。 ...

    Spring3.x企业应用开发实战光盘源码

    6. **Spring AOP事务管理**:源码中会展示如何使用声明式事务管理,通过@Transactional注解控制事务的开始、提交、回滚。 7. **Spring Security**:如果源码中涉及安全,那么会包含Spring Security的配置和用法,如...

    spring3.x的读书笔记-8

    - Spring 提供了基于 AOP 的声明式事务管理,通过 `@Transactional` 注解可以轻松地控制事务的边界。 6. **优点与不足** - MyBatis 灵活且易于上手,但 XML 配置可能会增加维护成本,而且对于多参数的情况,可能...

    spring-2.0.x-api

    Spring 2.0.x提供了声明式事务管理,通过@Transactional注解,开发者可以在方法级别声明事务边界,降低了事务管理的复杂性。同时,Spring支持编程式事务管理,通过PlatformTransactionManager接口实现事务控制。 6...

    Spring声明式事务配置模板2.x

    综上所述,Spring 2.x的声明式事务配置模板主要由`applicationContext.xml`中的事务管理器配置和注解驱动的事务管理两部分组成,结合`@Transactional`注解在业务逻辑中的使用,可以实现自动化、高效且易于维护的事务...

Global site tag (gtag.js) - Google Analytics