5

问题中的几乎所有内容。我刚刚发现 p6spy 与 hibernate 相关联,看到实际的 sql 查询真的很酷,尽管我对它的工作原理感到很困惑。
那么它是怎样工作的?

4

1 回答 1

2

p6spy 的基本思想是这样的:

  1. 取决于你在你的代码中选择Datasource或使用JDBC driver,你所做的不是引用真实的,而是指定 p6spy 特定的:com.p6spy.engine.spy.P6SpyDrivercom.p6spy.engine.spy.P6DataSource分别(有关完整文档,请参阅:p6spy.readthedocs.io/en/latest/configandusage.html)。
  2. 之后您在spy.properties文件中配置真实的(分别使用realdriverrealdatasource属性)
  3. 根据配置,您可以实现 sql 语句的日志记录(使用com.p6spy.engine.logging.P6LogFactory
  4. 所以为了回答你的问题,我们的想法是所有 jdbc 调用(语句执行、事务相关的东西)都将由 p6spy 包装(代理),并且根据您的配置,这些可以通过文件记录器(使用appender=com.p6spy.engine.logging.appender.FileLogger)、stdout 记录器来记录(使用appender=com.p6spy.engine.logging.appender.StdoutLogger)或 log4j 记录器(使用appender=com.p6spy.engine.logging.appender.Log4jLogger:)

如果对更多细节感兴趣,请随时询问,或查看项目本身:https ://github.com/p6spy/p6spy

于 2013-09-08T05:40:30.813 回答