继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

springboot实现事务回滚注意事项

纯情的慕哥
关注TA
已关注
手记 22
粉丝 5
获赞 8

1.数据库表是否支持事务

mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的
图片描述

2.添加@EnableTransactionManagement注解

@EnableTransactionManagement
public class Application {}

3.在service方法上添加@Transactional注解

@Override
@Transactional
public ShopExecution addShop(Shop shop, File shopImg) {
……
}

4.注意DDL语句是不支持回滚的

DDL (Data Definition Language 数据定义语言)

create table 创建表
alter table 修改表
drop table 删除表
truncate table 删除表中所有行
create index 创建索引
drop index 删除索引
当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。

DML (Data Manipulation Language 数据操作语言)

insert 将记录插入到数据库
update 修改数据库的记录
delete 删除数据库的记录
当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP