从Spring Boot显示Hibernate / JPA SQL语句


1.概述

Spring JDBC和JPA提供了对本机JDBC API的抽象,允许开发人员取消本机SQL查询。但是,我们经常需要查看这些自动生成的SQL查询以及执行它们的顺序以进行调试。

在本快速教程中,我们将介绍在Spring Boot中记录这些SQL查询的不同方法。

2.记录JPA查询

2.1。到标准输出

最简单的方法是将查询转储到标准输出是将以下内容添加到application.properties:

spring.jpa.show-sql=true

为了美化或漂亮地打印SQL,我们可以添加:

spring.jpa.properties.hibernate.format_sql=true

虽然这非常简单,但不推荐使用它,因为它直接将所有内容卸载到标准输出而不需要对日志框架进行任何优化。

而且,它不记录预准备语句的参数。

2.2. Via Loggers

现在,让我们看看如何通过在属性文件中配置记录器来记录SQL语句:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

第一行记录SQL查询,第二行记录准备好的语句参数。

漂亮的print属性也适用于此配置。

通过设置这些属性,日志将被发送到配置的appender。默认情况下,Spring Boot使用带有标准输出appender的logback。

3.记录JdbcTemplate查询

要在使用JdbcTemplate时配置语句日志记录,我们需要以下属性:

logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE

与JPA日志记录配置类似,第一行用于记录语句,第二行用于记录预准备语句的参数。

4.它是如何工作的?

生成SQL语句和设置参数的Spring / Hibernate类已经包含用于记录它们的代码。

但是,这些日志语句的级别分别设置为DEBUG和TRACE,低于Spring Boot - INFO中的默认级别。

通过添加这些属性,我们只是将这些记录器设置为所需的级别。