SqlSession的关闭是在finally里面还是在容器销毁的时候?ThreadLocal的用处?

SqlSession的关闭是在finally里面还是在容器销毁的时候?ThreadLocal的用处?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕阿满 2019-04-03 18:36:44

同学你好,这里的threadLocal泛型是SqlSession类型,

http://img1.sycdn.imooc.com//climg/5ca48c150001e4ba09340086.jpg

并且threadLocal.get()的返回值类型是SqlSession类型,如:

http://img1.sycdn.imooc.com//climg/5ca48c800001669b06090199.jpg

所以这里确实是在容器销毁时关闭SqlSession。

祝:学习愉快~

  • 提问者 慕斯950993 #1
    请问在哪里set的?threadLocal.get()的时候get到了吗?
    2019-04-04 09:28:11
  • 好帮手慕珊 回复 提问者 慕斯950993 #2
    你好!老师在代码中其实并没有实际用到LocalThread对象,只是简单介绍了一下。如果想用的话,需要重写openSession()方法,然后调用sqlSessionFactory的openSession()方法去获取一个SqlSession,然后将获取到的SqlSession使用localThread的set()方法存储起来。祝学习愉快!
    2019-04-04 15:36:13
好帮手慕阿满 2019-04-02 13:00:47

同学说的demo是指mybatis-pro这个项目吗?容器销毁相当于关闭mybatis-pro这个项目。在mybatis-pro这个项目中的监听器中,有contextDestroyed()方法用来监听容器的销毁,如果容器销毁则调用close()方法关闭SQLSession对象。

祝:学习愉快~

  • 提问者 慕斯950993 #1
    我说的就是mybatis-pro,麻烦看一下demo中的容器销毁调用close()的方法,调用的是ThreadLocal中get到的,但是ThreadLocal中其实是没有SQLSession的吧?
    2019-04-03 14:11:54
好帮手慕阿满 2019-04-01 11:30:38

同学你好,在这个demo中,并没有真正的用到ThreadLocal,只是做了一个简单的介绍。SqlSession的关闭是在close()方法中,而在监听到容器销毁的contextDestroy()方法中调用了close()方法用来关闭SqlSession。所以说SqlSession是在容器销毁时关闭。

祝:学习愉快~

  • 提问者 慕斯950993 #1
    到底是哪儿?你这打错字了吗?如果是在容器销毁时关闭的话,那demo就没关是吧...
    2019-04-01 20:03:01
好帮手慕阿满 2019-03-29 11:42:43

同学你好,SqlSession的关闭是在容器销毁时关闭。ThreadLocal是线程本地变量工具类,可以防止各个线程之间的变量互不干扰,适用于高并发编程,一般用来解决数据库连接、Session管理等。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕斯950993 #1
    但是demo中的ThreadLocal好像没有作用吧,demo中的SqlSession是在finally中关的
    2019-03-29 13:57:38
  • 好帮手慕阿满 回复 提问者 慕斯950993 #2
    同学所说的demo是指那个demo呢?建议同学说明一下具体的地方。祝:学习愉快~
    2019-03-29 16:35:42
  • 提问者 慕斯950993 回复 好帮手慕阿满 #3
    MyBatis入门那个demo, 具体代码请看截图,谢谢
    2019-04-01 09:13:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师