Spring事务管理

Spring声明式事务管理
本文介绍了如何使用Spring框架进行声明式事务管理。首先通过applicationContext.xml文件配置DataSourceTransactionManager作为事务管理器,并启用事务注解。其次,在业务层实现类BookShopServiceImpl中,通过添加@Transactional注解来指定哪些方法需要事务支持。

一、声明式事务配置

1、applicationContext.xml配置

① 配置事务管理器(jdbc控制管理方式)

<!-- 配置事务管理器:DataSourceTransactionManager (jdbc控制管理)-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	 <property name="dataSource" ref="dataSource"></property>
</bean>

说明:

i、 jdbc控制事务管理器

DataSourceTransactionManager

ii、jta控制事务管理器(Java Transaction API)

JtaTransactionManager

iii、Hibernate控制事务管理器

HibernateTransactionManager

② 启用事务注解

<!-- 启用事务注解 transaction-manager="transactionManager" 也可直接去掉(默认为transactionManager时)-->
<tx:annotation-driven transaction-manager="transactionManager"/>

注:这之前需要先导入tx命名空间

 

 

 

 

 

 

 

 

 

2、业务层方法配置

业务实现方法BookShopServiceImpl方法体前加@Transactional注解

package com.lty.tx;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService {
	
	@Autowired
	private BookShopDao bookShopDao;

	//添加事务注解
	@Transactional
	@Override
	public void purchase(String username, String isbn) {
		//1、获取书的单价
		int price = bookShopDao.findBookPriceByIsbn(isbn);
		
		//2、更新书的库存
		bookShopDao.updateBookStock(isbn);
		
		//3、更新用户余额
		bookShopDao.updateUserAccount(username, price);
	}

}

说明:

i、可以在方法或者类级别上添加 @Transactional 注解. 当把这个注解应用到类上时, 这个类中的所有公共方法都会被定义成支持事务处理

转载于:https://my.oschina.net/Howard2016/blog/1553033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值