gpt4 book ai didi

java - 如何在 Hibernate 中记录数据库事务的开始和完成

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:26 27 4
gpt4 key购买 nike

sql_show = true

hibernate 中的此属性打印运行的 sql,但我还想查看 begin transactioncomplete transaction 语句,以便我可以跟踪事务持续时间并查看查询在哪个事务中运行。

谷歌搜索显示

log4j.logger.org.hibernate.SQL = DEBUG, defaultAppender
log4j.logger.org.hibernate.type = DEBUG, defaultAppender
log4j.logger.org.hibernate.transaction=DEBUG, defaultAppender

还应向您显示交易级别数据。但事实并非如此。

调查更多我查看了 hibernate 代码并找到了一个类名

org.hibernate.ejb.TransactionImpl

这个类有 begin 和 complete 方法,但是这个方法不记录任何东西。

关于如何在 hibernate 中查看事务级别信息的任何建议
我正在使用 hibernate 2.2

最佳答案

对于 hibernate 5

  • 对于 SLF4J 日志记录:

    <logger name="org.hibernate.engine.transaction.internal.TransactionImpl" level="debug"/>
  • 对于 Log4j:

     <logger name="org.hibernate.engine.transaction.internal.TransactionImpl">
    <level value="DEBUG"/>
    </logger>

对于 hibernate 4

您需要为以下类将日志记录阈值设置为 DEBUG:

  1. 对于 JDBC 事务(例如 RESOURCE_LOCAL)

    • 对于 SLF4J 日志记录:

      <logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction" level="debug"/>
    • 对于 Log4j:

      <logger name="org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction">
      <level value="DEBUG"/>
      </logger>
  2. 对于 JTA 事务

    • 对于 SLF4J 日志记录:

      <logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction" level="debug"/>
    • 对于 Log4j:

      <logger name="org.hibernate.engine.transaction.internal.jta.JtaTransaction">
      <level value="DEBUG"/>
      </logger>

最好为尽可能少的类激活 DEBUG 级别,否则,您的日志大小将急剧增加。

关于java - 如何在 Hibernate 中记录数据库事务的开始和完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30576385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com