发布
社区首页 >问答首页 >如何在Hibernate中记录DB事务的开始和完成

如何在Hibernate中记录DB事务的开始和完成
EN

Stack Overflow用户
提问于 2015-06-01 14:39:19
回答 4查看 21.2K关注 0票数 25
代码语言:javascript
代码运行次数:0
复制
sql_show = true

hibernate中的这个属性打印正在运行的sql,但是我也希望看到begin transactioncomplete transaction语句,这样我就可以跟踪事务持续时间并查看在哪个事务中运行的查询。

谷歌显示

代码语言:javascript
代码运行次数:0
复制
log4j.logger.org.hibernate.SQL = DEBUG, defaultAppender
log4j.logger.org.hibernate.type = DEBUG, defaultAppender
log4j.logger.org.hibernate.transaction=DEBUG, defaultAppender

也应该向您显示事务级数据。但事实并非如此。

我进一步研究了hibernate代码,并找到了一个类名。

代码语言:javascript
代码运行次数:0
复制
org.hibernate.ejb.TransactionImpl

这个类有开始和完成方法,但是这个方法不记录任何东西。

有什么建议吗?如何在hibernate中查看事务级信息?

我正在使用hibernate 2.2

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-02 07:06:27

用于Hibernate 5

  • 对于SLF4J日志记录:
  • 对于Log4j:

用于Hibernate 4

您需要为下列类设置日志阈值以进行调试:

  1. 对于JDBC事务(例如RESOURCE_LOCAL)
代码语言:javascript
代码运行次数:0
复制
- For SLF4J logging:

  1. 用于JTA事务
代码语言:javascript
代码运行次数:0
复制
- For SLF4J logging:

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

票数 43
EN

Stack Overflow用户

发布于 2015-06-01 22:57:43

尝试设置hibernate generate_statistics属性

代码语言:javascript
代码运行次数:0
复制
<prop key="hibernate.generate_statistics">true</prop>

并设定

代码语言:javascript
代码运行次数:0
复制
log4j.logger.org.hibernate=DEBUG

然后您将看到所有hibernate日志,并且您将能够正确地选择hibernate类来登录log4j配置文件。

票数 6
EN

Stack Overflow用户

发布于 2019-10-29 23:24:04

如果您还希望看到新创建的事务的事务隔离级别:

log4j.logger.org.springframework.transaction.support.AbstractPlatformTransactionManager=debug log4j.logger.org.springframework.orm.hibernate5.HibernateTransactionManager=debug log4j.logger.org.springframework.orm.jpa.JpaTransactionManager=debug log4j.logger.org.springframework.jdbc.datasource.DataSourceTransactionManager=debug

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30576385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档