DataSource和Transactional原理介绍

转载自人工博客-DataSource和Transactional原理介绍

1、基础概念

名词介绍
jdbcjava操作数据库的一个规范
connectionjava程序与数据库建立的网络连接,是操作数据库的核心。但是创建和销毁是比较耗费资源
datasource池化复用connection,提供程序的性能
transaction保证一组相关联的数据库操作的一致性,要么同时成功,要么同时失败

2、工作原理

2.1、dataSource的原理

利用池化技术,维护了一定量的connection.减少了创建和销毁connection带来的性能损耗。同时可以提供一些辅助的功能,如sql预编译、sql监控等

2.2、transaction的原理

要保证事务,核心是要保证所有的sql的执行都使用的是同一个connection,且必须是手动提交的模式。所以当是transaction的模式下,强制将autoCommit修改为false,将connection以ThreadLocal的模式进行了存储,保障了在同一个线程的同一个事务里的获取的connection都是同一个。

3、容易出现的问题

3.1、连接池管理

连接池管理关键的2个参数是必须设置最大的等待时间最大的等待线程数

3.2、事务模式下无法切换数据源

事务模式下,内部切换数据源是无效的,原因是内部获取的conection都是从threadlocal中获取的。都是事务内第一个获取的链接。

案例细节参考:@Transactional导致AbstractRoutingDataSource动态数据源无法切换的解决办法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值