Spring----学习(21)---Spring声名式事务管理(依靠注解)

1.就是为了确保同一条记录在数据中的状态,记录的信息保持一致。

例子:

   一个用户,买了一本书,这时需要库存书-1,用户的账户余额 - 书的价格。

   在没有添加事务的时候,如果库存够,但是用户余额不足。导致库存 - 1,但是因为余额不足,SQL执行失败,

  此时应该回滚到库存 - 1 之前,但是由于没有事务管理。没有返回记录,所以导致数据库中的记录发生错误。

 2.spring的声名式事务管理。(依靠注解)

<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 启用事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

在需要添加事务的地方,添加注解:@Transactional

@Service("bookServiceImpl")
public class BookServiceImpl implements BookService{

	@Autowired
	private BookShopDao bookShopDao;

	@Transactional
	@Override
	public void userBuy(String username, String isbn) {
        //1 获取书的单价
		int price = bookShopDao.findBookPriceByIsbn(isbn);
		//2.更新库存
		bookShopDao.updateBookStock(isbn);
		//3.账户余额
		bookShopDao.updateUserAccount(username, price);
	}
}

作为对比:在没有使用spring依靠注解来实现事务管理的时候,希望添加事务管理的代码都必须写在注解出。

猜你喜欢

转载自blog.csdn.net/lsh15846393847/article/details/89418715