出于多种原因,我不想透露(冗长乏味的故事),我需要捕获复杂应用程序与数据库的交互。该应用程序构建在Spring / JdbcTemplate之上,我需要找到该应用程序发出的所有SQL。我怎么能以最简单的方式做到这一点?
创建JdbcTemplate的伪模拟实现似乎不合理。首先,JdbcTemplate是一个类,而不是一个接口。其次它有一个大的界面,使实施起来很繁琐。我正在考虑模仿DataSource
和Connection
来获取所有发送的SQL,但也许有一种更简单的方法可以做到这一点?
答案 0 :(得分:4)
这种问题非常巧妙地解决了。 P6Spy。有关如何使用Spring的good article。
希望有所帮助。
答案 1 :(得分:2)
捕获所有SQL出去的唯一方法是成为应用程序和数据库之间的接触点。这意味着,从实际处理JDBC交互的库实现中装饰DataSource
,Connection
和所有类型的Statement
,并记下在装饰连接上运行的所有语句来自SimpleJdbcTemplate
bean定义中指定的修饰数据源。从可维护性的角度来看,在任何其他方面捕获这一点都具有挑战性。