使用Spring的声明式事务管理带来的性能问题

做了一个简单的项目,使用到了spring和hibernate,但是有一个很奇怪的现象,就是运行很慢,从最简单的登陆开始就很慢,跟踪了一下,竟然花
了20多秒,然后把里面的一个update操作注释掉后就快了很多,一般不到一秒了,但是下一个操作也很慢了。最开始是怀疑更新数据库导致的缓存的性能问
题,但是后来去掉缓存问题依旧,然后继续跟踪,发现有个get操作也很慢,而get方法体内的操作实际也是很快的,也是不到一秒,怀疑是spring封装
的HibernateTemplate的问题,但是仔细一想不太可能,这个应该是有很多人用过了,而且以spring的技术能力应该不会有这种问题。突然
想到我的这些DAO方法都是配置了声明式事务的,而事务对性能的影响实际上是很大的,原来的配置如下:
        <property name=”transactionAttributes”>
            <props>
           
    <prop
key=”insert*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”update*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”delete*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”get*”>PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>

回忆了一下,我的DAO里面有很多不符合这个方法命名的方法,例如登陆方法本身就是login,还有一些addXxx方法以及isXxx,修改了add方法统一为insert方法,然后修改了声明的内容为:
        <property name=”transactionAttributes”>
            <props>
           
    <prop
key=”insert*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”update*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”delete*”>PROPAGATION_REQUIRED</prop>
           
    <prop
key=”*”>PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>

这样修改后问题得到解决。
需要说一下的是,如果这个里面不配置事务,速度也非常的慢。


作者: Cherami
原载: 使用Spring的声明式事务管理带来的性能问题
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

日志评价

 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 (暂无评价) --点击星星直接投票
Loading ... Loading ...


相关日志



随机日志



添加到网摘

[del.icio.us]  [新浪 VIVI]  [365key]  [YouNote]  [博采中心]  [Poco]  [SOHU狐摘]  [天极网摘]  [和讯网摘]
喜欢这个插件?

当前日志信息