Session获取不到的情况及解决办法(源码解析)

  本博客是自己在学习和工作途中的积累与总结,欢迎大家转载,转载时请注明出处,请尊重他人努力成果,谢谢。
1. 当有连个sessionFactory时,容易产生获取不到session的情况
原因: 进入事务@Service标注的业务类的业务方法后,当进行数据库操作时,会通过sessonFactory.getCurrentSession();方法获取,原理,当本地线程中不存在session时,会调用openSession创建一个并绑定到本地线程中,然后 调用,注意:这里的创建是当前事务该类中事务所绑定的sessionFactory的session,所以在同一方法中的后N个sessionFactory获取session时,只要他们的sessionFactory与当前事务所配置的sessionFactory不是同一个,会报获取不到session的异常,因为该session获取不到。或者更详细地说,由于spring维护一个ThreadLocal<Thread,Map<Object,Object>>来解决线程安全问题,那么,以当前线程作为key值,取到存有当前
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值