Spring事务
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 这个的值是数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 如果事务管理id是transactionManager 这里的transactionmanager可以不写--->
<tx:annotation-driven transaction-manager="transactionManager"/>
/**
* 事务属性:
* 1. propagation 事务的传播行为 . 一个事务方法被另外一个事务方法调用时, 当前的事务方法怎么使用事务.
* Propagation.REQUIRED 默认值. 使用调用者的事务
* Propagation.REQUIRES_NEW 将调用者的事务挂起,重新开启新的事务来使用。
* 2. isolation: 事务的隔离级别. 常用的是Isolation.READ_COMMITTED.
*
* 3. 默认情况下Spring会为所有的运行时异常进行回滚.
* noRollbackFor
* noRollbackForClassName
* rollbackFor
* rollbackForClassName
* 4. readOnly :设置是否为只读事务.
* true: 只读事务 如果事务真的只是读取数据,则有必要设置为只读事务. 帮助数据库引擎优化事务.
* false:非只读事务.
* 5.timeout: 超时属性。 设置事务在强制回滚之前可占用的时间. 避免一个事务对连接占用过长的时间.
*
*/
@Transactional(propagation=Propagation.REQUIRES_NEW,isolation=Isolation.READ_COMMITTED,readOnly=false, timeout=3)
public void buyBook(String username, Double isbn) {
bookShopDao.updateUserAccount(username, price);
}