老师好,有两个问题。
@Transactional
public afunction()
{
向数据库插入一条记录
...
程序员手误,程序运行到这里会有runtime exception,比如说不小心打了一个1/0;
...
在数据库中删除一条记录
}
本来已经执行了”向数据库插入一条记录“,因为0/1出现了runtime exception,”在数据库中删除一条记录“就没办法执行,@Transaction保证了事务回滚,要么插和删都执行,要么都不执行。
2. 假如程序中有1/0这样的错误,程序中是必须捕获RuntimeException,也就是必须要有catch(RuntimeException e),catch(RuntimeException子类 e)才能让事务回滚吗。
3. 假如有这样的一个操作:
@Transactional
public afunction()
{
向数据库插入一条记录
...
...
在数据库中删除一条记录
}
因为在”在数据库中删除一条记录“这一函数体中SQL语句写错了而报错,那这好像是一个非RuntimeException?是一个SQLexception?那这样是不会回滚的吗?会执行了插入但不执行删除吗?
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
了解课程