如何计算使用 Hibernate 对 H2 数据库进行的 SQL 查询的数量

Posted

技术标签:

【中文标题】如何计算使用 Hibernate 对 H2 数据库进行的 SQL 查询的数量【英文标题】:How do I count the number of SQL queries made to a H2 database using Hibernate 【发布时间】:2018-10-16 14:33:06 【问题描述】:

如何计算使用 Hibernate (4.3.11) 对 H2 (1.3.172) 数据库进行的 SQL 查询数。

我只需要一个长时间运行的任务(几个小时)结束时的总计数,我不需要跟踪实际查询本身。

有没有一种简单的方法可以做到这一点,理论上我可以用 Hibernate 或 H2 做,但我找不到解决方案。

【问题讨论】:

【参考方案1】:

这篇文章应该可以帮到你。

https://www.thoughts-on-java.org/hibernate-tips-count-executed-queries-session/

总之,您首先需要将此属性添加到您的配置中。

<property name="hibernate.generate_statistics" value="true" />

然后,您必须在 DAO 中添加以下行。

Statistics stats = sessionFactory.getStatistics();
long queryCount = stats.getQueryExecutionCount();

希望对你有帮助。

【讨论】:

你知道如果你一直启用会不会有很大的性能损失? 到目前为止,我只在小查询中使用过,影响不明显。不过,我不确定在大查询中是否是这种情况。

以上是关于如何计算使用 Hibernate 对 H2 数据库进行的 SQL 查询的数量的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hibernate 和 H2 数据库自动生成主键 [重复]

如何避免“无法确定数据库名称 [H2] 的 Hibernate 方言!”?

在数据库中使用带有 H2 的 Hibernate 时出错

一般意义上的h2与hibernate和MySql之间的区别

如何在 IntelliJ 和 H2 中创建 Hibernate 映射

java - 如何在java桌面应用程序中使用spring(事务)和hibernate创建嵌入式H2 DB?