本人也是初学者,理解上可能不够深刻甚至出现错误,还请指出,我会及时更正
今天学习SSM的时候讲到了事务传播机制,本来想做个事务传播的笔记的,那顺便也把事务的概念理清楚了吧
事务的概念:数据库提供的一种机制,用于控制一段语句同时执行成功或者失败,只要有其中一条语句执行失败,就会让所有处于该事务的语句执行失效,返回到一开始的状态,只有事务内的语句全部成功执行,其改变才会被提交生效
如果你对事务的概念不理解,可以看看我下面比较形象的比喻:
事务有点像游戏的存档功能,如果把程序执行过程比作打游戏的话,那么就好像你在打BOSS前都会存档一样,死了的话就可以读档,然后之前的一切都没有发生过(第三炸弹,败者食尘!)
事务就是这样,在指定语句时开启事务(存了一个档),如果后面某一步出了错,程序无法继续运行下去,那么事务就会回滚(读档),一切回到事务开启前的状态,如果没有出错,那么事务内所产生的改变就会被提交
接下来,为了对事务有更好的理解,我举一个实际的例子来说明事务机制(需要学过数据库):
数据库里有两个表,一个是学生表(主键Sid),一个是老师表(主键Tid),学生和老师关联,即每个学生都有一个表头用来放Tid来表示对应的老师
这个时候,我想同时插入一个新的学生和新的老师,并且我要这么干:
①把学生数据插入数据库,并且提前把他和新的老师关联(即使此时该老师还没有插入数据库)
②把老师的数据插入数据库
假设第①步我成功执行了,但是当到了第②步的时候,发生了错误,导致老师的数据没有录入数据库
那么这个时候就尴尬了,数据库里有这个新的学生,但是由于新的老师没被录入,你在老师表里找不到这个学生对应的老师,这显然是不行的,那么这个时候就需要事务机制了
我在录入学生的时候开启一个事务,在老师录入完成后结束事务,那么流程就会变成下图的样子
事务大概就这些了,之后还有事务隔离机制(数据库),事务传播机制(SSM),等有空再写下来吧
原文:https://www.cnblogs.com/helldiriver/p/11358966.html