00:00
好。我们刚才呢,把第一步初始化就看完了。看完以后呢,我们对它的总结,哎,就是。解析,解析文件的。每一个信息保存在configuration中。哎,我们一直在说这个话。然后呢,返回包含。Configuration。到咱们这default。而在这一步呢,大家需要注意的一点就是。有一个东西叫map的。我们后来呢,也会用到它。大家需要知道它是什么。哎,我们之前看它是什么,我们来看一下我们这个PPT里边对他的这个截图。Map的,诶往上走。这个map的statement,哎,一个map的statement就是代表一个增删改查标签的详细信息。
01:02
包括这个标签的ID属性值,以及各个属性值,包括它的这个SQ语句都在这。他呢,就是代表。一个。增删。的详细。这一块呢,只需要这个大家,大家以后见了要认识。好,接下来我们再来看。第二步了。获取CIRC对象,我们看它又做了些什么。断点放在这儿。我们拿到factor以后。我们呢,需要调用它的open session,获取到一个这个session,我们就来看它open session又做些什么。还是得把走。那之前的步骤呢,我们就直接放过了,就不看。走。它的build的方法来解析setting啊,以及我们看了一下解析如何解析member啊。
02:04
Map的构建细节,我们就直接放过A。接下来呢,来到circle。就是我们default,它要open session,我们来看。还是画出流程图?创建一个这个新的时序图。这个图呢,就是我们马贝它是如何open session的?那么第一步。好,我们这个第一步,第一步呢,它会有一个ciation factor。它是调用default session。哎,因为我们知道我们拿到的是default。他调用这个default circle session factor的open方法。调用它的open session open session以后呢,会是怎么办,我们来。
03:03
好,Open session,这open session呢,最终其实调用的是open session from that source。这一步呢?它调用open。划错了。它呢,在这调用open session。Open session。而这个open session呢,最终其实调的是咱们这个open session。我们才是方法。然后呢,它其实调的是咱们这个。是这个。From。从数据源里边拿一个。Open。好,我们就来看这里边怎么办,它首先第一步从configuration中拿到默认的ex类型,这一块呢,我们也大概说一下。
04:05
这里边有一个default type,默认是simple,在我们MY的官方文档全局配置中有一个设置项。这个设置项呢,哎,就有一个default type,哎,它默认就是simple,相当于是拿到这个值。这个呢,它有三种取值,Simple reuse bench,哎,这个simple的意思就是一个简单的执行器,简单的。Re,一个可复用的执行器和be,一个能做批量操作的执行器,我们后来也会再来演示它。先拿到呢,我们这个其实执行器的默认类型让它返回,我们来看open session from that source的细节。进来以后呢,我们来看它是第一步,哎,先要。获取到environment对象。获取到environment。
05:01
或许从我们全局配置中获取当前环境,以及获取到一些内容,行,让他获取吧。他还创建了一个事物,好。做完以后呢,它整个做完以后,它调用了一个方法叫configuration。X。哎。他创建了一个叫EX4大对象,第一个冒出来了,我们注意一下。这一块呢,它open的时候。我们把这个删掉。Open session。最终呢,会来到咱们这个康复。这个configuration呢,它在这里边open的时候会有好多步骤啊,首先呢,获取到其他内容,创建一些事物。一些。一些信息,哎,获取完了以后呢,用来创建事物啦之类的。控制事物的行,我们放在这儿,然后呢,关键的一步它创建。
06:10
关键这个new怎么执行,我们就得来看。最终扭完以后就会有一个ex对象。我们就来看他new ex是怎么扭的。他在这儿给我们拗一个Q。好,我们就来看他怎么用。这个new的方法呢,我们进来。这ex里边传入事物,以及传入excu的这个类型,类型我们全局配置里边有进去。他判断,哎,这块拿到SQ的类型,我们是这个simple。如果是批量的,就new一个半ex,如果是reuse的,就new一个reuse,否则呢,New一个simple。
07:04
所以说呢,最终在这一块,它会根据不同的类型。根据ex类型。在全局配置。咱们这个类型来我们全局配置中配置的它的这个类型,然后呢。配置的类型。创建。咱们这个simple。或者呢,咱们这个叫reuse。或者呢,我们是一个叫Bach。好,我们把它放在这儿。它会创建出一个对应的好,我们接下来让它创建好,我们默认呢是一个simple,它创建一个simple。而executor我们都知道。
08:01
点进去。是一个接口。这个接口里边呢,规定了啊,增删改用的update以及查询的所有方法,所以说是用来做增删改查的。好,Ex创建完了以后呢,它判断if catch enabled,诶。这个catch a呢,就是我们全局configuration里边。是否配置了二级缓存?如果有二级缓存,用C包装。把ex传进来,有一个catch ex我们进去可以看一下。这个country excu呢,非常简单,它里边有一个啊,包含了一个excu。然后呢,他把这个ex包装了一下,而真正即使来执行增删改查,你看啊,包括关闭资源,它都是用它里边的传进来的excu对象,相当于是我们刚才创建的这个excu的一个门面,诶。所有的增删改查都用的是实际的这个给exor,它只是呢用can excuor包装了一下。
09:05
这是如果有二级缓存用它包装,用它包装的好处是什么呢?你接下来查询之前,诶你看啊,我们这一块就会有缓存操作,我呢就可以在这一块调用我自己的查询方法,我先查缓存。所以说呢,这一块我们。再来说一下。如果有二级缓存。如果当然没有二级缓存,就没有这些步骤了。如果有二级缓存。配置开启。然后呢,我们就会创建咱们这个。Executor。它是来包装我们这个XQ的。而实际增执行增删改查也是我们这个在执行。大家有知道这一步就行。好,我们接下来来看,就让它包装吧,包装完以后呢,会返回一个ex,然后接下来这就有一个非常重要的。
10:04
在这一块大家看好啊。Ex创建完以后,它还又调用了一个方法才给最终的赋值。这个方法呢,我们翻译过来叫intercept,叫intercept拦截器的量。调用拦截器链的普拉根奥方法啊,我们没有写拦截器,如果我们写了几个拦截器,拦截器就会在这里边有啊,我们没有拦截器,但是呢,我们进去看一下比拉跟or方法。这个PLUG2方法呢,也非常简单,就是诶拿到所有的拦截器,诶,这是所有的拦截器,拿到每一个拦截器,调用每一个拦截器的plug方法,把我们目标对象。来拼装。我们来看啊,比如说呢,这个目标对象就是我们传过来的ex,把我们目标对象调用plug方法包装一下,最终返回。
11:00
所以说这一步非常重要。这跟插件有关,我留给把给大家留在这儿。比如说呢,每一个。Ex创建出来都要经过这一步说呢,哎,这一步的作用就是用哎每拿每一个插件来包装。这不是每一个插件拿每每一个拦截器,我们现在呢,先说拦截器。每一个拦截器。重新。包装executor。并返回。而至于它怎么重新包装的,我们后边再来看。大家需要知道这个流程的存在。好,接下来他整个都把excu包装完以后,来给我们返回excu对象。把这个返回的ex对象,诶,又传进default circlercation里边,你看啊,它是扭了一个default CIRC。
12:08
所以说呢,这个executor有了。而最终工作的。我们有一个叫。Default。而default circle session呢,就是我们这个circle接口。我们可以来看这个circle,我们用的这个circle session呢,它是一个接口。那接口下呢,就有这个default。而我们也是把这个扭出来的default s直接就返回了。所以说呢,我们这个default s session大家应该注意,里边也包含了全局配置文件的所有信息,哎,包含了所有配置信息,以及我们对象。所以说呢,这个default。创建。
13:00
创建。等方算cos式。咱们这default circle。它呢也是包含configuration,这个default CI包含configu。和我们这个。方法最终能执行增删改查,我们是用ex的,那么呢,返回的这个default s。他呢?就最终返回给我们这一块。好,最终呢,我们调用open session,返回的就是它哦,那就是这。画长一点好,整个呢,就是会返回这个东西。返回。返回我们这个default circle,我们最终用的就是它。这个流程我们就走完了,我把这个流程图我们截取下来。
14:03
在这个流程里边。这是第二步。在这个流程里边呢,大家需要知道。第二步,返回。返回咱们这个circles。对象。而在这个对象里边,我们在这一块open session的时候,哎,我们会哎。包含。咱们这。也就是说呢,我们在这一块只需要大家知道,我们在open session的时候会创建四大对象之excu对象,Ex也会被层层包装诶。
15:01
再次会被重建。会在。这一步。创建。行,那么这个的就是咱们第二步流程,哎,得到default circle对象。
我来说两句