Hibernate/JPA-SQL-Anweisungen von Spring Boot anzeigen

Ruhezustand / JPA-SQL-Anweisungen von Spring Boot anzeigen

1. Überblick

SpringJDBC undJPA bieten Abstraktionen über native JDBC-APIs, sodass Entwickler native SQL-Abfragen vermeiden können. Häufig müssen jedoch diese automatisch generierten SQL-Abfragen und die Reihenfolge, in der sie ausgeführt wurden, für Debugging-Zwecke angezeigt werden.

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 die SQL zu verschönern oder hübsch auszudrucken, können wir Folgendes hinzufügen:

spring.jpa.properties.hibernate.format_sql=true

Während dies extrem einfach ist, entlädtit’s not recommended alles direkt in die Standardausgabe, ohne dass ein Protokollierungsframework optimiert werden muss.

Darüber hinaus sindit doesn’t log the parameters of prepared statements.

2.2. Über Logger

Lassen Sie uns nun sehen, wie wir die SQL-Anweisungen protokollieren können, indem wir Protokollierer in der Eigenschaftendatei konfigurieren:

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

Die erste Zeile protokolliert die SQL-Abfragen und die zweite Anweisung protokolliert die vorbereiteten Anweisungsparameter.

Die hübsche Druckeigenschaft funktioniert auch in dieser Konfiguration.

Durch Festlegen dieser Eigenschaften wirdlogs will be sent to the configured appender. Standardmäßig verwendet Spring Bootlogback mit einem Standard-Out-Appender.

3. Protokollieren vonJdbcTemplate Abfragen

Um die Anweisungsprotokollierung bei Verwendung vonJdbcTemplate 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?

The Spring / Hibernate classes,, die SQL-Anweisungen generieren und die Parameter setzen,already contain the code for logging them.

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

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

5. Fazit

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

Wenn wirconfigure multiple appenders wählen, können wir auch SQL-Anweisungen und andere Protokollanweisungen in verschiedene Protokolldateien trennen, um die Dinge sauber zu halten.