一、声明式事务配置
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 注解. 当把这个注解应用到类上时, 这个类中的所有公共方法都会被定义成支持事务处理的