本文介绍了用Spring缓慢关闭myBatis中的SqlSession的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的myBatis遇到麻烦了.在春季启用事务管理器后,我发现事务方法(甚至是非事务方法)的性能严重下降:

I have a trouble with myBatis. I see serious performance degradation on transactional methods (And even non transactional) after enabling transaction manager in spring:

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="url" value="${database.url}"/>
    <property name="driverClassName" value="${database.driver}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="typeAliasesPackage" value="com.company.model" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.company.mapper" />

</bean>

以日志为例,您可以看到在关闭和开始新事务之间大约需要150毫秒.

Log for example, as you can see there are about 150 milliseconds between closing and starting new transaction.

09:28:58.134 [http-bio-9081-exec-12] DEBUG o.m.s.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@cf80c3]
09:28:58.297 [http-bio-9081-exec-3] DEBUG o.m.s.SqlSessionUtils - Creating a new SqlSession

数据库:Oracle 11.2谢谢.

Database: Oracle 11.2Thanks.

推荐答案

原因很愚蠢.是数据库降级.

The reason was stupid. It was database degradation.

这篇关于用Spring缓慢关闭myBatis中的SqlSession的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 09:27