SqlSessionFactoryBean的事务管理器技术探究
来源:互联网 发布:传奇手游源码 编辑:程序博客网 时间:2024/06/11 19:49
笔者今日学习了Spring的事务管理器,重点使用
org.springframework.jdbc.datasource.DataSourceTransactionManager,结合前段时间学习的mybatis,发现个很有趣的代码原理,和大家分享。
一:sqlSessionFactoryBean的配置
我给额外加了个事务工厂的属性:
其中transcationManage所指的是:
相当于说我想指定sqlSessionFactory的事务管理器使用Spring的。
然后启动就会报如下错误:
Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.springframework.jdbc.datasource.DataSourceTransactionManager] to required type [org.apache.ibatis.transaction.TransactionFactory] for property 'transactionFactory': no matching editors or conversion strategy found类型不匹配。
然后我就去找原因发现如下:
发现TransactionFactory接口有三个实现类
SpringManagedTransactionFactory.class
JdbcTransactionFactory.class
ManagedTransactionFactory.class
以上实现类全是基于TransactionFactory接口,其中sqlSessionFactoryBean默认的事务管理器是SpringManagedTransactionFactory。
说明为证:
Set the MyBatis TransactionFactory to use. Default is SpringManagedTransactionFactory The default SpringManagedTransactionFactory should be appropriate for all cases: be it Spring transaction management, EJB CMT or plain JTA. If there is no active transaction, SqlSession operations will execute SQL statements non-transactionally. It is strongly recommended to use the default TransactionFactory. If not used, any attempt at getting an SqlSession through Spring's MyBatis framework will throw an exception if a transaction is active. See Also:SpringManagedTransactionFactoryParameters:transactionFactory the MyBatis TransactionFactory就是说默认的事务管理器是SpringManagedTransactionFactory。
然后去找:
原因就在这了,DataSourceTransactionManager没有实现TransactionFactory接口,所以最后会类型不匹配错误。
总结:mybatis是自己独立的一套事务管理,线程安全,但是可拓展性很差。
0 0
- SqlSessionFactoryBean的事务管理器技术探究
- Spring的事务管理器
- Spring的事务管理器
- Spring的事务管理器
- Spring技术内幕——事务的创建,挂起,回归,提交(事务拦截器和抽象事务管理器)
- SqlSessionFactoryBean
- SqlSessionFactoryBean
- SqlSessionFactoryBean
- Spring的事务 之 9.2 事务管理器
- Hibernate 事务管理器的事务提交
- Spring的事务管理器简介
- spring的事务管理器有几种
- Spring的事务管理器用法
- SqlSessionFactoryBuilder 与 SqlSessionFactoryBean的区别
- 事务管理器
- 存储过程与事务应用的探究
- spring的事务管理器的配置
- 与基础事务管理器的通信失败
- Android 侧滑删除功能
- Java split用法及注意事项
- Mybatis分页插件PageHelper正确的使用方法(网上有2篇不够科学的文章)
- Xcode配置SVN详细步骤
- 信息自动滚动
- SqlSessionFactoryBean的事务管理器技术探究
- 好消息:庆祝小张网校成立
- Android KK平台,联系人列表#组置于A~Z之前
- 云平台关键技术
- How Do Story Points Relate to Hours?
- UVa 10883 - Supermean (杨辉三角 通过取对数解决大数除大数)
- android 分辨率自适应
- org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity
- windows方面