1)为什么SqlSessionTemplate 是线程安全的?

其内部类SqlSessionInterceptor 的invoke()方法中的getSqlSession()方法:

如果当前线程已经有存在的SqlSession 对象,会在ThreadLocal 的容器中拿到SqlSessionHolder,获取DefaultSqlSession。

如果没有,则会new 一个SqlSession,并且绑定到SqlSessionHolder,放到ThreadLocal 中。

SqlSessionTemplate 中在同一个事务中使用同一个SqlSession。

调用closeSqlSession()关闭会话时,如果存在事务,减少holder 的引用计数。否则直接关闭SqlSession。

2)在编程式的开发中,有什么方法保证SqlSession 的线程安全?

SqlSessionManager 同时实现了SqlSessionFactory、SqlSession 接口,通过ThreadLocal 容器维护SqlSession。

DefaulSqlSession 和SqlSessionTemplate 的区别是什么?相关推荐

  1. c/c++的内存四区

    内存四区的图示 内存四区的代码案例 #include <stdio.h> void fun() {static int k = 10; //初始化的静态局部变量(data区的rw段)sta ...

  2. java栈、堆、方法区

    1.java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) ...

  3. PyTorch 笔记(11)— Tensor内部存储结构(头信息区 Tensor,存储区 Storage)

    1. Tensor 内部存储结构 tensor 数据结构如下图所示,tensor 分为头信息区(Tensor)和存储区 (Storage),信息区主要保存着 Tensor 的形状(size).步长(s ...

  4. win7调整屏幕亮度_番禺区户外LED屏幕求购,区LCD屏幕解决方案

    广州市唯昕电子科技有限公司为您详细解读gVtwd番禺区户外LED屏幕求购的相关知识与详情,正在当今大尺寸液晶面板范畴,55英寸卖得货已经成为市场的支流.但是关于很多行业用户来说,李某们会担忧将来使用的 ...

  5. linux+bin+写入引导区,CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决

    用UltraISO Premium Edition  9.3 制作的CentOS 6.4 U盘安装盘, 安装时提示Press the key to begin the installation pro ...

  6. C++在堆区创建数组

    new申请数据空间 c++中的new在堆区申请空间的时候的格式是: int * p = new int(10); //该代码的意思就是说在堆区申请的内存赋值为10 //int 后面括号里面写的就是你的 ...

  7. 栈区和堆区内存分配区别

    一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况. 从上 ...

  8. mingle_大众汽车品牌SUV之夜,数千平米的mingle区和超长弧面屏了解一下?

    前言:上海车展前夕,各家汽车厂商争奇斗艳,一夜之间发布会无数.今天要给大家聊的是大众汽车品牌SUV之夜,还记得去年我同样出席了现场并写了大众全系SUV集结登陆北京898!,但今年是完全不同的体验,我们 ...

  9. 扩展存储过程在哪里_青浦区智能仓储哪里有,一件代发1.9元全国_1.9元发全国-上海东臻仓储服务...

    首页 > 新闻中心 发布时间:2020-11-21 06:50:15 导读:元发全国-上海东臻仓储服务为您提供青浦区智能仓储哪里有,一件代发元全国的相关知识与详情: 先进性指标是一个比较难以评价 ...

最新文章

  1. 独家解析英伟达最新GPU-A100对AI行业带来的影响
  2. redis 2m数据读取_Flink读写Redis(二)读取redis数据
  3. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  4. Mybatis构建sql语法
  5. C语言中Uint8_t数据类型
  6. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  7. Junit4与junt3并存时产生的问题
  8. mysql员工与部门代码,springMVC入门实例(员工系统-Mysql)代码简单易懂
  9. VMware ESXi 安装
  10. 照片放大后怎么变清晰?
  11. python实现微信机器人: AI智能回复
  12. 论文中怎么写F检验值
  13. STM32F1系列与STM32F4系列的GPIO
  14. DiMP:Learning Discriminative Model Prediction for Tracking
  15. php中的乐观锁和悲观锁
  16. OA办公软件如何帮助企业更好地实现移动办公
  17. 微信小程序开发者工具error:用户绑定的手机需要进行验证,请在客户端完成短信验证
  18. Scala中的集合排序总结
  19. ubuntu拨号上网
  20. 神级程序员教你用代码哄好生气的女朋友,网友:我要甜甜的恋爱!

热门文章

  1. 在无IIS下用SharpDevelop进行Asp.net 开发
  2. Java程序员如何在编码中减少bug存在
  3. POJ1655 Balancing Act
  4. vue设置全局变量或函数
  5. Memcached 数据缓存系统
  6. 二:java语法基础:
  7. TrimPath - Js模板引擎
  8. VS 2010的一些常用问题
  9. KMyMoney:全体理财好管家
  10. 区块链行业级应用服务商识数信科获千万元天使轮融资...