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条)

报告相同问题?

悬赏问题

  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页