Перейти к основному содержимому

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

· 2 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

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 и другие операторы журнала в разные файлы журнала, чтобы сохранить чистоту.