Показать Hibernate/JPA SQL-операторы из Spring Boot

Показать Hibernate / JPA-операторы SQL из Spring Boot

1. обзор

SpringJDBC иJPA предоставляют абстракции по сравнению с собственными API-интерфейсами JDBC, позволяя разработчикам отказаться от собственных SQL-запросов. Однако часто нам нужно видеть эти автоматически сгенерированные SQL-запросы и порядок их выполнения в целях отладки.

В этом кратком руководстве мы рассмотрим различные способы регистрации этих SQL-запросов в Spring Boot.

2. Ведение журнала запросов JPA

2.1. К стандартному выходу

Самый простой способ - выгрузить стандартные запросы - это добавить вapplication.properties следующее:

spring.jpa.show-sql=true

Чтобы украсить или красиво распечатать SQL, мы можем добавить:

spring.jpa.properties.hibernate.format_sql=true

Хотя это очень просто,it’s not recommended напрямую выгружает все на стандартный вывод без какой-либо оптимизации структуры ведения журнала.

Кроме того,it doesn’t log the parameters of prepared statements.

2.2. Через регистраторы

Теперь давайте посмотрим, как мы можем регистрировать операторы SQL, настроив регистраторы в файле свойств:

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

В первой строке записываются запросы SQL, а во второй оператор записываются параметры подготовленного оператора.

Свойство довольно печати будет работать и в этой конфигурации.

Установив эти свойства,logs will be sent to the configured appender. По умолчанию Spring Boot используетlogback со стандартным выходным приложением.

3. Регистрация запросовJdbcTemplate

Чтобы настроить ведение журнала операторов при использованииJdbcTemplate, нам потребуются следующие свойства:

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

Аналогично конфигурации ведения журнала JPA, первая строка предназначена для записи операторов, а вторая - для регистрации параметров подготовленных операторов.

4. Как это работает?

The Spring / Hibernate classes,, которые генерируют операторы SQL и задают параметрыalready contain the code for logging them.

Однако уровень этих операторов журнала установлен наDEBUG иTRACE соответственно, что ниже уровня по умолчанию в Spring Boot -INFO.

Добавляя эти свойства, мы просто устанавливаем эти регистраторы на необходимый уровень.

5. Заключение

В этой короткой статье мы рассмотрели способы ведения журнала SQL-запросов в Spring Boot.

Если мы выберемconfigure multiple appenders, мы также можем разделить операторы SQL и другие операторы журнала в разные файлы журнала, чтобы все было в порядке.