1. Обзор
Spring JDBC и 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
Хотя это чрезвычайно просто, это не рекомендуется , так как это напрямую выгружает все в стандартный вывод без какой-либо оптимизации структуры ведения журнала.
Более того, он не регистрирует параметры подготовленных операторов.
2.2. Через регистраторы
Теперь давайте посмотрим, как мы можем регистрировать операторы SQL, настроив регистраторы в файле свойств:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
В первой строке регистрируются SQL-запросы, а во второй инструкции — параметры подготовленной инструкции.
Свойство симпатичной печати будет работать и в этой конфигурации.
При установке этих свойств журналы будут отправляться в настроенный аппендер. По умолчанию Spring Boot использует логбэк
со стандартным выходным приложением.
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 и другие операторы журнала в разные файлы журнала, чтобы сохранить чистоту.