Hibernate / JPA-SQL-Anweisungen vom Spring Boot anzeigen

1. Übersicht

Spring JDBC und JPA bieten Abstraktionen über native JDBC-APIs, sodass Entwickler native SQL-Abfragen vermeiden können. Oft müssen wir jedoch diese automatisch generierten SQL-Abfragen und die Reihenfolge sehen, in der sie für Debugging-Zwecke ausgeführt wurden.

In diesem kurzen Tutorial werden verschiedene Möglichkeiten zum Protokollieren dieser SQL-Abfragen in Spring Boot vorgestellt.

2. Protokollieren von JPA-Abfragen

2.1. Zur Standardausgabe

Der einfachste Weg, die Abfragen in den Standardausgang zu verschieben, besteht darin, application.properties Folgendes hinzuzufügen :

spring.jpa.show-sql=true

Um das SQL zu verschönern oder hübsch zu drucken, können wir hinzufügen:

spring.jpa.properties.hibernate.format_sql=true

Dies ist zwar sehr einfach, wird jedoch nicht empfohlen, da alles direkt in die Standardausgabe entladen wird, ohne dass ein Protokollierungsframework optimiert werden muss.

Darüber hinaus werden die Parameter vorbereiteter Anweisungen nicht protokolliert.

2.2. Über Logger

Nun wollen wir sehen, wie wir die SQL-Anweisungen protokollieren können, indem wir Logger in der Eigenschaftendatei konfigurieren:

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

In der ersten Zeile werden die SQL-Abfragen und in der zweiten Anweisung die vorbereiteten Anweisungsparameter protokolliert.

Die hübsche Druckeigenschaft funktioniert auch in dieser Konfiguration.

Durch Festlegen dieser Eigenschaften werden Protokolle an den konfigurierten Appender gesendet . Standardmäßig verwendet Spring Boot die Rückmeldung mit einem Standard-Out-Appender.

3. Protokollieren von JdbcTemplate- Abfragen

Um die Anweisungsprotokollierung bei Verwendung von JdbcTemplate zu konfigurieren , benötigen wir die folgenden Eigenschaften:

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

Ähnlich wie bei der JPA-Protokollierungskonfiguration dient die erste Zeile zum Protokollieren von Anweisungen und die zweite zum Protokollieren von Parametern vorbereiteter Anweisungen.

4. Wie funktioniert es?

Die Spring / Hibernate-Klassen, die SQL-Anweisungen generieren und die Parameter festlegen, enthalten bereits den Code zum Protokollieren .

Die Ebene dieser Protokollanweisungen ist jedoch auf DEBUG bzw. TRACE festgelegt , was niedriger ist als die Standardstufe in Spring Boot - INFO .

Durch Hinzufügen dieser Eigenschaften setzen wir diese Logger nur auf die erforderliche Ebene.

5. Schlussfolgerung

In diesem kurzen Artikel haben wir uns mit den Möglichkeiten zum Protokollieren von SQL-Abfragen in Spring Boot befasst.

Wenn wir mehrere Appender konfigurieren, können wir auch SQL-Anweisungen und andere Protokollanweisungen in verschiedene Protokolldateien unterteilen, um die Übersichtlichkeit zu gewährleisten.