从Spring Boot显示Hibernate / JPA SQL语句

Show Hibernate/JPA SQL Statements from Spring Boot

1.概述

Spring JDBC和JPA通过本机JDBC API提供了抽象,从而使开发人员可以取消本机SQL查询。但是,通常我们需要查看那些自动生成的SQL查询以及出于调试目的而执行它们的顺序。

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

进一步阅读:

Spring JDBC

Spring Data JPA简介

休眠拦截器

2.记录JPA查询

2.1。到标准输出

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

1
spring.jpa.show-sql=true

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

1
spring.jpa.properties.hibernate.format_sql=true

尽管这非常简单,但不建议这样做,因为它无需进行日志记录框架的任何优化即可直接将所有内容卸载到标准输出中。

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

2.2。通过记录仪

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

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

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

漂亮的打印属性也将在此配置中工作。

通过设置这些属性,日志将发送到已配置的附加程序。默认情况下,Spring Boot使用带有标准out附加程序的logback。

3.记录JdbcTemplate查询

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

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

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

4.如何运作?

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

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

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

5.结论

在这篇简短的文章中,我们研究了在Spring Boot中记录SQL查询的方法。

如果选择配置多个追加程序,我们还可以将SQL语句和其他日志语句分隔到不同的日志文件中,以保持工作状态整洁。