Spring Batch:Hibernate 打印 SQL 查询和所用时间

Posted

技术标签:

【中文标题】Spring Batch:Hibernate 打印 SQL 查询和所用时间【英文标题】:Spring Batch: Hibernate print SQL queries and time taken 【发布时间】:2021-11-17 02:13:51 【问题描述】:

我有一个使用 Azure SQL 服务器作为后端的 Spring Batch 应用程序,我正在使用 Hibernate 来更新数据库。

下面是我的休眠配置

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager" lazy-init="true">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2012Dialect</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.format_sql">false</prop>
            <!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
        </props>
    </property>
</bean>

<bean class="org.springframework.batch.core.scope.StepScope" />

<!-- DATA SOURCE -->
<bean id="demoDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
    <property name="url" value="jdbc:sqlserver://demo.database.windows.net:1433;database=sqldb;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;" />
    <property name="username" value="user1" />
    <property name="password" value="p@ssword1" />
</bean>

我想知道所有查询列表及其平均执行时间,我该如何实现?

【问题讨论】:

【参考方案1】:

您可以查看p6spy。该工具包装您的数据源并记录所有查询及其执行时间。

【讨论】:

以上是关于Spring Batch:Hibernate 打印 SQL 查询和所用时间的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch多线程卡住没有任何异常输出

Spring Boot 和 Hibernate:打印/记录 DDL

spring集成hibernate 怎样在控制台输出打印建表语句

群集环境中的Java Batch作业

hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size 有啥区别?

Hibernate 抛出的 Could not execute JDBC batch update