事务机制

本人也是初学者,理解上可能不够深刻甚至出现错误,还请指出,我会及时更正

 

今天学习SSM的时候讲到了事务传播机制,本来想做个事务传播的笔记的,那顺便也把事务的概念理清楚了吧

事务的概念:数据库提供的一种机制,用于控制一段语句同时执行成功或者失败,只要有其中一条语句执行失败,就会让所有处于该事务的语句执行失效,返回到一开始的状态,只有事务内的语句全部成功执行,其改变才会被提交生效

 

如果你对事务的概念不理解,可以看看我下面比较形象的比喻:

事务有点像游戏存档功能,如果把程序执行过程比作打游戏的话,那么就好像你在打BOSS前都会存档一样,死了的话就可以读档,然后之前的一切都没有发生过(第三炸弹,败者食尘!)

事务就是这样,在指定语句时开启事务(存了一个档),如果后面某一步出了错,程序无法继续运行下去,那么事务就会回滚(读档),一切回到事务开启前的状态,如果没有出错,那么事务内所产生的改变就会被提交

 

接下来,为了对事务有更好的理解,我举一个实际的例子来说明事务机制(需要学过数据库):

数据库里有两个表,一个是学生表(主键Sid),一个是老师表(主键Tid),学生和老师关联,即每个学生都有一个表头用来放Tid来表示对应的老师

 

这个时候,我想同时插入一个新的学生和新的老师,并且我要这么干:

①把学生数据插入数据库,并且提前把他和新的老师关联(即使此时该老师还没有插入数据库)

②把老师的数据插入数据库

 

假设第①步成功执行了,但是当到了第②步的时候,发生了错误,导致老师的数据没有录入数据库

那么这个时候就尴尬了,数据库里有这个新的学生,但是由于新的老师没被录入,你在老师表里找不到这个学生对应的老师,这显然是不行的,那么这个时候就需要事务机制了

我在录入学生的时候开启一个事务,在老师录入完成后结束事务,那么流程就会变成下图的样子

 

事务大概就这些了,之后还有事务隔离机制(数据库),事务传播机制(SSM),等有空再写下来吧

 

 

posted @ 2019-08-15 20:19  地狱老司机  阅读(254)  评论(0编辑  收藏  举报