00:00
刚才我们实验的时候啊,我们只是不就试验了一个不好用的,我们的实验一个好用的,把这个钱数改一下,改成160,这个时候这个书是可以买的,找一个。没有异常吗?看啊66本没问题好了,这样的话呢,最基本的一个事物的操作就写完了,那具体是怎么写的呢?分为三个步骤,配置文件里边加两个配置,一个是配一个事物管理器,还有一个呢,配一个嗯,注解驱动有起作用,然后我们在对应的方法上添加TRYC注解就可以了,很简单,嗯,下边我们进一步的来说事物,那除了这个基本的以外的话呢,事物还有一些属性,我们知道有什么属性啊,比方说事物的传播行为,比方说事物的隔离级别,比方说我这个事物对哪些异常进行回滚,哪些啊不回滚,再比方说这个,呃,事物的过期时间,哎等等等等,我们来说一下这些,首先的话呢,我们看如何加。
01:28
括号out斜杠,哎,有一些。首先来说这个叫propagation,叫事物的传播行为。什么叫事物的传播行为呢?说白了就是一个事物方法被另一个事物方法调用的时候,那么我这个被调用这个事物方法如何工作在事物中,这就是事物的传播行为,就是我这个这个事物啊怎么传播去?举一个例子哈,比方说你跟朋友啊,要去这个饭店吃饭,呃,来到饭店之后的话呢,刚好发现你的同学,就是你们共同的朋友也在那吃饭,这个时候就有一个问题,你是要跟他们一起吃,还是自己在开一桌?
02:21
事物的传播行为,一起吃,嗯,那私密性差一些,不一起吃,感觉这个关系都挺好的,不一识也不咋好啊是吧?哎,这就是一个问题,那我们讲的这个事物的传播行为跟这个差不多,我再说一遍啊,当一个事物方法调用另外一个事物方法的时候,那我第一个事物,我第一个方法已经在一个事物里边了,这个时候第二个方法是用第一个事物,是用第一个事物的事物呢?是用第一个方法的事物呢?还是新开一个事物,还是怎么样,这就是事物的传播行为,过来看吧。啊有几个最常用的是铝块的跟铝块的new,铝块的有事物就行,我就用,我就用你的了,第二个叫铝,对不起,我需要开新事物,你以前那个挂起来,我新事物预计完事的话。
03:21
比以前那个再恢复,直接通过例子来进行说明,这里边的话呢,我们还需要再定义一个接口开,这个开里的话呢,就是一个人可以买多本书,你看user name,而这个SBN是一个list类型的,然后它以book service作为这个同讯变量,啊有一个方法叫checkout OK写一下。首先新建一个接口,开表方法,Public or check out,买多本书,User name list论的isbns提供实现。
04:15
加上一个属性private at过了怎么样?At后边是吧,At思维第一个字母加写ctrl c o,哎,一个人要买多本书。String的ISBN isbns book service点看到了吧,这个时候的话呢,上边我也加上一个十,大家看。
05:15
这是一个事物方法吧,他要去调另外一个事物方法,那我们就是说,哎,这个时候这个事物的这个是如何进行传播的,就是说这个事物方法是新开一个事物啊,还是用上一个事物方法,已经有的事物啊,就这么一回事,我们来进行一个测试,这ctional pro特试事物的传播行为。
06:07
Get b开始点class开,点checkout,来AA买两本书,点SD,一零零一来1002,我们先看效果过来。暂时改成石板。好,回来170,我让这个钱的话呢,也足够300。先买一下啊,就是这个时候啊,这两本书都是可以买的走。
07:05
过了看一百三吧,都变成九本挺好的,下一个我要再买的话会怎么样,钱不够了吧,170块钱两本,我是不就我不就一百三了,大家说这个时候我们这个运行结果能是个啥样的呢?能是个啥样的了,猜猜啊走会抛一个什么异常啊,肯定是余额不足吧,哎,余额不足抛了肯定是抛了,那么我们分析一下这个过程哈,AA还有130,我买第一本书是够买的吧,第一本书100块钱嘛,第二本书不够吧,应该是我买第二本书的时候抛的异常。
08:05
啊,那我的问题是第一本书能买成功吗?能买成功吗?那先看一下效果,有一个也没成吧,没成,这是事物的默认的传播行为,看一眼它是这样的,默认的传播行为的话呢,叫record,有就行,所以说我这个checkout是不是在一个事物里边啊,那我从checkout开始调用的时候开始事物,Checkout结束的时候结束事物,这个时候我去掉这个P方法,我本身我是不是带着这个事物呢?那这个P我就用checkout这个事物吧,那于是第一本书买成功了,第二幅书抛一常了,啊,回滚到最原始的状态。
09:05
看见了吧,一本也没成功,这个是我们默认的取值,在这里边写哈,事物的传播行为proification等于啊,叫required来使用propagation指定事物的传播行为,指定事物的传播行为什么意思呢?即当前的事物方法被另外一个事物方法调用时,如何使用事物,是用另外一个事物方法的事物,还是另看一个新事物,还是怎么样呢?那默认情况下就是用。
10:05
那个方法的数默认情况下默认取值,喂,矩块,即使用嗯,调用方法的事物,所以说你看这个图会更清楚一些,哦,我P啊,我是需要事物的,不过我有就行,要我去这个饭店吃饭,我的需求很非常简单,我就想吃饭,我不想谈事儿,于是的话呢,同学在那块说你过来吃吧,OK,没问题,我没有别的诉求,我就想吃饭,好的,那我们还有一个取值的话呢,叫铝块拗,我需要一个新的食物,就是我去吃饭,然后啊,我说哎,对不起,你们吃吧,哎,我就自己吃,呃,我需。
11:05
要跟我这个兄弟啊,谈点事儿是吧。这样的一个情况,我需要新开一桌,于是瞧着叫request,第五,我需要一个个的事物。好了再看结果,看钱哈,看钱是不是购买一本的呀,找一个。好了,还是余额不足吧,瞧着是不是买了一本啊,扒了吧,哎,这叫new,看图更清楚,我最开始这个TRY呢是有事物的,因为我现在我说了啊,我用request new导致我在调P方法的时候,我需要一个新事物啊,PX1就是checkout这个事物挂起,我开始自个儿新的事物,懂吗?然后自个这个方法完成的话呢,这个事物结束,然后的话呢,PX1继续,什么意思啊,虽然说你checkout有一个事物,但是我里边我是不是单独有事物啊,哎,我单独有事物,所以说我这次买成功了,那便是真的成功了。好了,到第二个,同样道理,这个前柱不够啊,我回滚的话只回滚到当。
12:30
点这个P方法初始的状态抛了一个异常,第二本书失败了,然后的话呢,再继续,这叫require new,看到了吧,整个的话呢,叫事物的传播行为require new。说使用自己的事物,使用自己的事物,然后呢,调用的事物方法的事物被挂起,这叫new,大家更多通过这个图来理解是更直观的,那以上我们说的是事物的传播行为,那实际上取值的话呢,嗯,有这么一些,我们这两个理解的话,其他几个大家自己看一下就好了,用的比较少,那这两个用的最多的好了,那我们在做这个验,这个验证的时候的话呢,我们还需要新加上一个接口才能够看到这个效果,我们通过啊propagation指定事物的传播行为,OK,大家试一下。
我来说两句