zoukankan      html  css  js  c++  java
  • DataSource和Transactional原理介绍

    1、基础概念

    名词 介绍
    jdbc java操作数据库的一个规范
    connection java程序与数据库建立的网络连接,是操作数据库的核心。但是创建和销毁是比较耗费资源
    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动态数据源无法切换的解决办法

    .
  • 相关阅读:
    C#数组的使用
    CLR设计类型之接口
    CLR类型设计之泛型(二)
    CLR类型设计之泛型(一)
    CLR类型设计之属性
    CLR类型设计之参数传递
    CLR类型设计之方法与构造器
    将博客搬至CSDN
    Unity_与android交互
    CSS3制作hover下划线动画
  • 原文地址:https://www.cnblogs.com/chen-xing/p/java_DataSource_Transactional.html
Copyright © 2011-2022 走看看