00:00
好,这里边儿呢,你看我们通过说诶。由于啊th local对象需要作为绑定数据时,KY6KKV对中的啊这个T,所以要保证唯一性。哎,怎么保证唯一性呢?就是加static声明成这个静态资源,它就能保证是唯一的了。生份证静态资源就能保证唯一性啊,因为这个加在加在这个类啊,这个类只加在一份,那么类里边的这些个静态资源就也也就生产的就也就只有一份泛型呢,传的是我们要绑定的数据,这个类型就是connection,呃,然后呢,New local创建这个对象啊,我们在这儿呢。
01:10
也把这个拿到我们代码当中来。和它放在一起啊。好嘞。呃,然后呢?下边怎么去获取数据库连接呢?啊,怎么获取数据库连接呢。回到我们get这个方法啊呃,首先第一步。不是一上来就从数据源去取啊,先从本地线程先检查一下看看有没有。尝试从。哎,当前线程检查是否存在已经绑定的,哎,Connection对象,这个呢,就用我们射门的thread local去调一下钙的方法。
02:01
得到它。当然这个时候呢,你得去这个判断一下啊,看他是不是脑。这检查connection对象是否为空。呃,如果是的话。则从数据源获取数据库连接connection呢?就等于data source.get connection。那他这有一常有一常我们在这儿呢,为了上层呢,用着方便,我们在这儿呢,咱们去给他这个拆开一下。但是呢,又为了不掩盖问题,我们在这儿呢,封装成运行时异常抛出。哎,为了。调用工具方法方便啊。我们一常不往外。
03:06
抛啊,或者说这个叫变异式异常。诶,然后呢,为了不掩盖问题。哎,我们捕获到的编译式异常封装成呃,运行式异常抛出去。肉尿,Runtime exception。把这个E给它存进去,这样就封掉了啊,这是这是这是这这有这么一个一个一个一个操作。然后呢,这样一来你看。我这个connection这个变量哈。
04:00
要么就从当前线程上面就获取到了connection对象,如果没有的话,它也会从数据源里边去获取到connection对象,获取到是吧?哎,总之connection到最后呢,这些运行完了以后,到这儿它就会是有值的,所以我们这儿呢,就返回这个connection。但这样的话就需要放到TRY的外边去声明哈。哎,这我们就返回connection。好嘞,哎,这就是我们获取数据库连接的方法。哎,是从当前线程上面去获取。相应的释放数据库连接啊,这个意思就跟它差不多。
05:00
Public void release。释放数据库连接。这个呢,就是我们的对,你得把数据库连接对象给传进来,你得让我知道要去释放谁啊,我们在这儿呢,进行一个判断啊,呃,如果它等于闹。按说我们自己写代码注意应该不会出现这种问题啊,呃,如果它不等于呢。不等于,那我们再去调它的close方法。然后他需要拆开。啊,就是还是老惯例啊,咱们不掩盖问题。好嘞。啊,同时呢,这个呃。
06:03
这个这个close呢,其实本质上就是在数据库连接池中将。哎,当前连接这个这个连接对象啊,标记为空前,并没有真的释放掉,另外一步呢,就是说,呃,将当前。数据库连接从哎当前线程上移除。对了,说起来的话呢,就是这个thread local哈,Remove哈,说起来的话,我们这儿少做了一步。哎。你在这儿没有获取到哈,你这个线程上面没有,然后从数据源里边拿到了,那你得给他绑定到当前线程上啊,不然以后你咋获取啊是吧?哎呃,获取到数据库连接后,绑定到当前线程。
07:06
就是我们thread local.set把connection给传进去,哎,所以说你看get set remove这三个方法我们就都用到了。好,咱们把这个释放数据库连接的方法拿过来。
我来说两句