Рубрики
Без рубрики

Показать инструкции Hibernate/JPA SQL из Spring Boot

Узнайте, как настроить ведение журнала сгенерированных операторов SQL в приложении Spring Boot.

Автор оригинала: baeldung.

1. Обзор

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

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

Дальнейшее чтение:

Весенний JDBC

Введение в весенние данные JPA

Перехватчики гибернации

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

2.1. К Стандартному Выходу

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

spring.jpa.show-sql=true

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

spring.jpa.properties.hibernate.format_sql=true

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

Более того, он не регистрирует параметры подготовленных операторов.

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

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

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

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

Свойство pretty print также будет работать в этой конфигурации.

Установив эти свойства, журналы будут отправлены в настроенное приложение . По умолчанию Spring Boot использует logback со стандартным приложением out.

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

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

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. Заключение

В этой короткой статье мы рассмотрели способы регистрации SQL-запросов в Spring Boot.

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