计算JdbcTemplate查询

时间:2018-07-05 14:30:56

标签: java h2 spring-jdbc

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

是否可以将拦截器添加到JdbcTemplate或DataSource中来为我们做到这一点,或者是否可以使用H2之类的测试数据库来验证结果,以便至少证明其正确性?

1 个答案:

答案 0 :(得分:0)

您可能想使用以下命令拦截JDBC驱动程序JDBCSpy

  

功能

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

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