mycybyb 2008-08-07 17:04
浏览 819
已采纳

Spring事务的性能问题

每次调用service方法的时候,DataSourceTransactionManager都会首先调用DataSourceUtils的getConnection方法,从而调用dataSource.getConnection(),耗时很严重。

因为service中有cache,先从cache中取,如果取到,则直接返回,如果取不到,则查询数据库,放到cache中,再返回。 大部分的情况是不需要读取数据库的,可spring每次都会获得一个数据库连接。
[b]问题补充:[/b]
不是浪费的问题,而是获得连接这个动作很耗时。在性能测试的时候,占了很大比例。
[b]问题补充:[/b]
这个问题是这几天才发现的,以前并不知道,代码都是这么写的。

service对外提供一个接口,具体实现要不要用cache是实现的问题。而如果按照你说的方法,我的接口中就需要实现两个方法,一个不使用事务,一个使用,暴露两个方法接口,好像不大好啊
[b]问题补充:[/b]
你不写我也知道你的意思。
但还是有我说得问题,本来我只需要提供一个public Object service();可改完之后就还要提供一个 public class DBOperatorService public void service(...)。而这个实际上也是对外暴露的,而又不允许别人调用(虽然有办法解决)。总觉得不太好。

  • 写回答

5条回答 默认 最新

  • iteye_14762 2008-08-07 20:40
    关注

    我们在实际的应用中也是对那些单条的查询语句不加事务的, 只对数据库saveOrUpdate时抽出一个功能集中的service层!哈哈!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料