P6SPY 是如何工作的?

发布于 2024-11-24 14:18:37 字数 97 浏览 1 评论 0原文

几乎问题中的所有内容。我刚刚发现 p6spy 与 hibernate 结合使用,看到实际的 sql 查询真的很酷,尽管我对它的工作原理感到非常困惑。
那么它是如何运作的呢?

Pretty much everything in the question. I just discovered p6spy in association with hibernate which is really cool to see the actual sql queries, though I'm quite baffled on how it works.
So how does it work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北城半夏 2024-12-01 14:18:37

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)、标准输出记录器(使用appender=com.p6spy)来记录这些内容。 p6spy.engine.logging.appender.StdoutLogger)或 log4j 记录器(使用: appender=com.p6spy.engine.logging.appender.Log4jLogger

如果对更多详细信息感兴趣,请随时询问,或在以下位置查看项目本身:https://github.com/p6spy/p6spy

the basic idea on p6spy goes like this:

  1. depending if you go for Datasource or for JDBC driver in your code,
    what you do is instead of referring the real ones, you specify p6spy
    specific ones: com.p6spy.engine.spy.P6SpyDriver or com.p6spy.engine.spy.P6DataSource respectively (for full documentation, see: p6spy.readthedocs.io/en/latest/configandusage.html).
  2. afterwards you configure the real ones in your spy.properties file (using realdriver or realdatasource properties respectively)
  3. depending on the configuration you can achieve the logging of sql statements (using com.p6spy.engine.logging.P6LogFactory)
  4. so to answer your question, the idea is that all the jdbc calls (statements execution, transaction related stuff) will be wrapped (proxied) by p6spy and depending on your configuration, these can be logged via the file logger (using appender=com.p6spy.engine.logging.appender.FileLogger), stdout logger (using appender=com.p6spy.engine.logging.appender.StdoutLogger) or log4j logger (using: appender=com.p6spy.engine.logging.appender.Log4jLogger)

If interested in more details, feel free to ask, or check the project itself on: https://github.com/p6spy/p6spy

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文