1
我對myBatis有麻煩。我查看啓用事務管理器在開春後的交易方法(甚至非事務性)嚴重的性能下降:在myBatis中緩慢關閉SqlSession與彈簧
<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毫秒。
09:28:58.134 [http-bio-9081-exec-12] DEBUG o.m.s.SqlSessionUtils - Closing non transactional SqlSession [[email protected]]
09:28:58.297 [http-bio-9081-exec-3] DEBUG o.m.s.SqlSessionUtils - Creating a new SqlSession
數據庫:Oracle 11.2 感謝。
您正在使用BasicDataSource。如果您擔心性能,我會考慮連接池。有不同的庫可以幫助解決這個問題,本文解釋使用c3p0,但它可能有點過時。應該給你的想法,但。 http://www.raistudies.com/spring/integrating-mybatis-3-and-spring-frameworks-part-2/ –
我已經將BoneCP作爲池數據源打開,但mybatis無論哪種調用選擇sequentualy,並且在事務之間有很大的延遲。 –
我不會叫150ms大拖延。每次請求使用多少次交易?如果每個選擇都有單獨的交易,那麼150毫秒可能會開始累加,但您應該將它們合併爲一個交易。 –