说说datasource connection driver 的关系

干了这么多年对于datasource的概念还是有一些模糊,在jdbc的datasource接口到底是干啥的呢,发现这个接口最重要的方法就是getConnection ,那很明显了,datasource是用来获取连接的,那这个有意思了,我们都知道jdbc获取连接的方式还有一个简单粗暴的,

		 con = DriverManager.getConnection(url);  //获取数据库连接

有意思吧,那为啥还要定义个接口来获取连接呢,这里就要引出一个新的概念,数据库连接池,为啥要有连接池,这个跟所有池存在的意义一样,就是单个资源的创建于销毁太麻烦,那么我就把这些资源全部都收集起来,这个就是设计模式中的享元模式,设计模式的知识点来了哈。

这里不得不说两个事,一个是连接池里的王八是哪里来的,就是通过上面的DriverManager.getConnection(url);拿来的,然后放到池子里了。然后我们的datasource就闪亮登场了,通过getConnection方法就在池子里拿出一个王八,然后就各种把玩,玩够了在放回池子里,等别人拿来玩。
应用比较广的连接池工具是阿里的druid,提供一整套的druidDatasource,duirdConnectionPool,这都是成套出现的,相辅相成的。当然不管你的druid有多花哨,都是基于jdbc的,基于jdbc的实现driver的,骨子里的创建连接,销毁连接,都还是要靠他们。

再多少点,spring里获取连接的方法有一个叫datasourceUtils.getConnection(datasource),这玩应是干啥的呢,还是获取连接的,只是他有一个新的概念叫TransactionSynchronizationManager.getResource(dataSource),这烂糟的东西开始给我弄的挺晕乎,他跟事务有关系了,就是你获取连接的语句在事务中,那么我保证你获取当前事务使用的连接,这个设计思路其实可以扩展到我们开发的若干个环节,让一组操作都用同样的资源,这个好玩吧。
好久不写了,分段都不会了,大家凑活着看吧,如果写的好给我赞,不行就批评,我也长进一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值