Spring事务管理
2019-12-23 本文已影响0人
青丝如梦
数据库隔离级别
| 脏读 | 不可重复读 | 幻读 | |
|---|---|---|---|
| Read uncommitted | √ | √ | √ |
| Read committed--Sql Server , Oracle默认 | × | √ | √ |
| Repeatable read--MySQL默认 | × | × | √ |
| Serializable | × | × | × |
JpaTransactionManager编程式事务(手动管理事务)
@Resource(name = "transactionManager")
private JpaTransactionManager transactionManager;
@Autowired
private UserService userService;
public void addUser(User user) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// 事物隔离级别,开启新事务
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
//事务超时时间,超时自动rollback
def.setTimeout(30);
//获取事务状态
TransactionStatus status = transactionManager.getTransaction(def);
try {
//业务逻辑
userService.save(user);
//提交事务
transactionManager.commit(status);
} catch (Exception e) {
if(!status.isCompleted()){
transactionManager.rollback(status);
}
}
}