sql_show = true
hibernate 中的此属性打印运行的 sql,但我还想查看 begin transaction
和 complete 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:
对于 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>
对于 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/