spring 怎么管理ibatis的session,spring事务管理后 会关闭session么?在源码中怎么查看

如题所述

首先要明白spring为什么要管理session?session是在什么时候使用的?以及为什么要管理?

1、spring其实管理的是sessionFactory对象,很明显这个对象是用来获取session的。在spring上下文全局中应该只有一个,这个不用担心因为默认情况下spring都是管理bean都是单例的。

2、session是线程不安全的,因此我们使用的是时候应当使用局部变量的方式使用。也就是方法体内使用
3、先看图

圈起来这段就是提交事务的,也就是说session控制着事务,那么完全可以交给spring的AOP来管理事务。
在来看个图,专门配置事务的

可能你觉得这个比较发麻,这么简单的一个方法我手动控制就好了!但是实际应用当中可能你这个业务方法还调用其他的业务方法,那时候你这个事务要怎么控制,是全部写在一个try-catch里面还是怎么处理?

追问

spring 源码中怎么查看事务完成后 session关闭?

追答

org.mybatis.spring.SqlSessionUtils看下这个源码,还有这个代码不是spring自己的,是mybatis-spring整合的一个jar包里面的。

温馨提示:内容为网友见解,仅供参考
无其他回答

spring 怎么管理ibatis的session,spring事务管理后 会关闭session么?在...
1、spring其实管理的是sessionFactory对象,很明显这个对象是用来获取session的。在spring上下文全局中应该只有一个,这个不用担心因为默认情况下spring都是管理bean都是单例的。2、session是线程不安全的,因此我们使用的是时候应当使用局部变量的方式使用。也就是方法体内使用3、先看图 圈起来这段就是提交事...

SpringMVC的工作原理是什么样的,跟Spring的关系是怎么样的?_百度知 ...
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。

Spring数据库事务典型错误用法剖析
当一个Controller使用Service方法时,如果这个Service方法标注有@Transactional,那么它就会启用一个事务,而一个Service方法完成后,它就会释放该事务,所以前后两个insertRole的方法是在两个不同的事务中完成的。 下面是笔者测试这段代码的日志,可以清晰地看出它们并不存在于同一个事务中。 org.mybatis.logging.Logger:Crea...

ssi框架中struts spring ibatis分别的作用及其表现哪些
3. 可以看到有了struts基本也就可以了, 为什么要用spring呢, struts整合spring以后是吧Action交给spring管理了。。, 是因为spring在管理上面有很大的优势, spring的IoC是核心概念, 你只有实际编写过才能体会到IoC的好处 4. ibatis是持久层的东西, 就是和数据库相关, 当然, 要对数据库管理, 还是...

Ibatis中SqlMapClientTemplate和SqlMapClient的区别
SqlMapClientTemplate是org.springframework.orm.ibatis下的 而SqlMapClient是ibatis的 SqlMapClientTemplate是SqlMapClient的封装类.SqlMapClient中包含着session的管理.SqlMapClientTemplate用于session的封装,以及异常的捕捉.所以按照以上的推断来说.应该尽量使用SqlMapClientTemplate.保证session以及Exception的正常以及统一.下...

java中Spring是什么?
三、在传统应用程序当中,我们如何来完成数据库事务管理?需要一系列“获取连接,执行SQL,提交或回滚事务,关闭连接”,而且还要保证在最后一定要关闭连接,多么可怕的事情,而且也很无聊;如果采用Spring,我们只需获取连接,执行SQL,其他的都交给Spring来管理了,简单吧。所以,Spring能非常简单的帮我们管理数据库事务。 四、...

Spring与Mybatis的整合方法有哪些
2、采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.SqlSessionTemplate。mybatis中, sessionFactory可由SqlSessionFactoryBuilder.来创建。MyBatis-Spring 中,使用了SqlSessionFactoryBean来替代。SqlSessionFactoryBean有一个必须属性dataSource,另外其还有一个通用属性configLocation(用来...

Spring框架?
另外,这个模块还使用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务。 对那些更喜欢使用对象\/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATISSQL映射。Spring的事务管理支持这些ORM框架中的每...

Java开源框架是什么?
Spring Framework 【Java开源 J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作...

spring 在ssh三大框架中充当一个什么样的角色?
1 为你的项目增加一个管家,你不必写很多的代码去实现一些框架已经实现的功能。很多事情就可以交给管家去做。很多的拦截,过滤,日志,国际化问题,发送消息,集成Hibernate,Ibatis,http远程调用。MVC框架等。事务管理等,都不需要自己写很多的代码,完全可以通过适当的配置交给Spring去管理。项目开发进度会...

相似回答