首页 > 代码库 > Spring中的事物管理----HelloWorld

Spring中的事物管理----HelloWorld

在学习Spring的事物管理之前明白先明白几个概念
1什么是事物:事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用
     例子说明:例如银行转账,A账户转账(转200)到B账户,涉及的动作就是A账户余额减少200,B账户余额增加200,把这两个动作当成一个工作单元,要么两个动作一起完成,要么两个动作都不起用

2事物作用是什么:有四大特性,分别是:原子性(就是多个动作组成一个原子操作,要么一起完成,要么一起不起作用)
                        一致性(就是事物完成后,数据和资源保持一致性)
                    隔离性(可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏)
                    持久性(一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中)

Spring中的事物管理使用步骤:

* 使用事务来处理的步骤:
* 1先配置事务管理器(每个数据源Spring都有对应的事务管理器)(因为数据源管理器是管理数据源的,所以要添加数据源属性)

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource"></property>    </bean>

* 2启用事务注解

<!-- 启用事务注解 -->    <tx:annotation-driven transaction-manager="transactionManager"/>

* 3在需要管理的方法前面使用@Transactional,这样就会把方法放入事务管理器,进行管理

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


* 4为什么在测试类中不能使用呢????

Spring中的事物管理----HelloWorld