1.什么是数据库事务?
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
2.数据库事务的特性有哪些?
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性。
3.为什么要使用事务?
事务过程(Transaction processing)是为了保证数据的正确性,保证系统数据正常。
4.如何在ssm(springmvc,spring,mybatis)使用事务?(springboot其实也类似,只不过是在代码中配置DataSourceTransactionManager)
首先spring配置文件配置如下配置:
<!-- (事务管理) -->
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- ref是数据库源bean的id。-->
<!-- 使用annotation定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
方法一:在需要事务回滚的方法上加注解 @Transactional(rollbackFor = Exception.class),
这种方式是代码中没有try catch的时候可以生效。
上述方法执行后我们可以看到事务是执行了的,但这里有个小细节:@Transactional不做任何配置 默认是对抛出的unchecked异常回滚,checked异常不会回滚,为了让所有异常都会让事务启动可以将 @Transactional配置为 @Transactional(rollbackFor = Exception.class)
方法二:如果代码中捕获了异常,则需要在异常中手动回滚事务,
例如:
@Override
@Transactional
public Json addOrder(TOrderAddReq tOrderAddReq) {
try{
//增删改方法
} catch (Exception e) {
// 手动硬编码开启spring事务管理
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();}
// }
return json;
}