Mostra istruzioni SQL Hibernate / JPA da Spring Boot

1. Panoramica

Spring JDBC e JPA forniscono astrazioni rispetto alle API JDBC native, consentendo agli sviluppatori di eliminare le query SQL native. Tuttavia, spesso abbiamo bisogno di vedere quelle query SQL generate automaticamente e l'ordine in cui sono state eseguite per scopi di debug.

In questo breve tutorial, esamineremo diversi modi per registrare queste query SQL in Spring Boot.

2. Registrazione delle query JPA

2.1. All'uscita standard

Il modo più semplice è scaricare le query su standard out è aggiungere quanto segue ad application.properties :

spring.jpa.show-sql=true

Per abbellire o stampare abbastanza l'SQL, possiamo aggiungere:

spring.jpa.properties.hibernate.format_sql=true

Sebbene sia estremamente semplice, non è consigliato poiché scarica direttamente tutto sull'output standard senza alcuna ottimizzazione di un framework di registrazione.

Inoltre, non registra i parametri delle istruzioni preparate.

2.2. Tramite logger

Ora, vediamo come possiamo registrare le istruzioni SQL configurando i logger nel file delle proprietà:

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

La prima riga registra le query SQL e la seconda istruzione registra i parametri dell'istruzione preparata.

La proprietà pretty print funzionerà anche in questa configurazione.

Impostando queste proprietà, i registri verranno inviati all'appender configurato . Per impostazione predefinita, Spring Boot utilizza il logback con un appender out standard.

3. Registrazione delle query JdbcTemplate

Per configurare la registrazione delle istruzioni quando si utilizza JdbcTemplate , sono necessarie le seguenti proprietà:

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

Simile alla configurazione di registrazione JPA, la prima riga è per le istruzioni di registrazione e la seconda è per registrare i parametri delle istruzioni preparate.

4. Come funziona?

Le classi Spring / Hibernate, che generano istruzioni SQL e impostano i parametri, contengono già il codice per registrarle .

Tuttavia, il livello di queste istruzioni di log è impostato rispettivamente su DEBUG e TRACE , che è inferiore al livello predefinito in Spring Boot - INFO .

Aggiungendo queste proprietà, stiamo semplicemente impostando quei logger al livello richiesto.

5. conclusione

In questo breve articolo, abbiamo esaminato i modi per registrare le query SQL in Spring Boot.

Se scegliamo di configurare più appendici, possiamo anche separare le istruzioni SQL e altre istruzioni di log in diversi file di log per mantenere le cose pulite.