【问题标题】:Counting JdbcTemplate queries计数 JdbcTemplate 查询
【发布时间】:2018-07-05 14:30:55
【问题描述】:

我们需要计算我们的 Web 应用程序针对每个请求发送到数据库的查询数(以及结果行数)。我们可以通过手动计数轻松实现这一点(每次调用JdbcTemplate.query*,增加一个计数器),但是这很容易在以后忘记,这会导致错误的结果。

有没有办法向 JdbcTemplate 或 DataSource 添加一个拦截器来为我们做到这一点,或者有没有办法在使用 H2 等测试数据库时验证结果,以便我们至少可以证明正确性?

【问题讨论】:

  • 这里好像需要一个查询监听器。
  • H2 提供什么样的日志记录?也许将 H2 记录的查询与应用的 IP 相关联。

标签: java h2 spring-jdbc


【解决方案1】:

您可能希望使用例如拦截 JDBC 驱动程序。 JDBCSpy.

特点

  • 记录所有SQL语句的执行和迭代时间
  • 识别多次执行的语句
  • 所有列出的语句都具有可配置深度的堆栈跟踪
  • 提供所有连接、SQL 语句、结果集的统计信息
  • 提供结果集的大小
  • 提供一个 API 来检索所有统计信息
  • 列出当前正在执行的所有语句
  • 列出所有已执行但尚未关闭的语句
  • 如果语句的执行时间超过可配置的阈值,则通知(例如通过跟踪)
  • 在您忘记关闭结果集或连接关闭之前的语句时通知
  • 支持不同的记录器(log4j、java logging、slf、...)
  • 可由自定义侦听器扩展

该项目似乎不再积极维护,但它应该为您提供一个起点。通过拦截 JDBC,您将确保无论查询如何执行,例如手动ConnectionJdbcTemplate或JPA所有查询都会被拦截。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2023-03-17
    • 2011-11-09
    相关资源
    最近更新 更多