Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker 诊断工具


Spring Boot JPA 打印 SQL 语句及参数

Spring Boot JPA 大约 1042 字

需求

JPA执行SQL语句时,打印最终生成的SQL以及传入的参数。

方法一

show-sql设置为true表示打印SQL语句。

format_sql设置为true表示格式化SQL(多行显示)。

spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

方法二(推荐)

show-sql: true虽然可以打印SQL日志,但其没有使用Logger日志管理类,而是使用System.out标准输出。

虽然现在基于Kubernetes中的pod部署可以使用ELKLoki等直接收集标准输出,但可以使用logback等日志框架,可以设置MDCtraceId追踪上下调用链路。

JPA

注意:此处org.hibernate.SQL中的SQL不是一个类,必须大写。

logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type.descriptor.sql.BasicBinder: trace

JdbcTemplate

logging:
  level:
    org.springframework.jdbc.core.JdbcTemplate: debug
    org.springframework.jdbc.core.StatementCreatorUtils: trace

对应源码

org.hibernate.SQL对应的Logger位于SqlStatementLogger中。

package org.hibernate.engine.jdbc.spi;

public class SqlStatementLogger {
    private static final Logger LOG = CoreLogging.logger( "org.hibernate.SQL" );
    private static final Logger LOG_SLOW = CoreLogging.logger( "org.hibernate.SQL_SLOW" );
}

参考

https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html

阅读 215 · 发布于 2023-03-03

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批