Toon Hibernate / JPA SQL-statements van Spring Boot

1. Overzicht

Spring JDBC en JPA bieden abstracties over native JDBC API's waardoor ontwikkelaars native SQL-queries kunnen schrappen. Vaak moeten we echter die automatisch gegenereerde SQL-query's zien en de volgorde waarin ze zijn uitgevoerd voor foutopsporingsdoeleinden.

In deze korte tutorial gaan we kijken naar verschillende manieren om deze SQL-query's in Spring Boot te loggen.

2. Logboekregistratie van JPA-zoekopdrachten

2.1. Naar standaarduitvoer

De eenvoudigste manier is om de queries naar standard out te dumpen door het volgende toe te voegen aan application.properties:

spring.jpa.show-sql = waar

Om de SQL te verfraaien of mooi af te drukken, kunnen we toevoegen:

spring.jpa.properties.hibernate.format_sql = waar

Hoewel dit buitengewoon eenvoudig is, het wordt niet aanbevolen omdat het alles direct naar de standaarduitvoer laadt zonder enige optimalisatie van een logging-framework.

Bovendien, het logt niet de parameters van voorbereide instructies.

2.2. Via loggers

Laten we nu eens kijken hoe we de SQL-instructies kunnen loggen door loggers in het eigenschappenbestand te configureren:

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

De eerste regel registreert de SQL-query's en de tweede instructie registreert de voorbereide instructieparameters.

De mooie print-eigenschap werkt ook in deze configuratie.

Door deze eigenschappen in te stellen, logboeken worden naar de geconfigureerde appender gestuurd. Spring Boot gebruikt standaard inloggen met een standaard uit appender.

3. Logboekregistratie JdbcTemplate Vragen

Voor het configureren van logboekregistratie bij gebruik van JdbcTemplatehebben we de volgende eigenschappen nodig:

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

Net als bij de configuratie van de JPA-logboekregistratie, is de eerste regel voor het loggen van instructies en de tweede voor het loggen van parameters van voorbereide instructies.

4. Hoe werkt het?

De klassen Spring / Hibernate, die SQL-instructies genereren en de parameters instellen, bevatten al de code om ze te loggen.

Het niveau van die logboekinstructies is echter ingesteld op DEBUG en SPOOR respectievelijk, die lager is dan het standaardniveau in Spring Boot - INFO.

Door deze eigenschappen toe te voegen, stellen we die loggers gewoon op het vereiste niveau in.

5. Conclusie

In dit korte artikel hebben we gekeken naar de manieren om SQL-query's in Spring Boot te loggen.

Als we ervoor kiezen om meerdere toevoegingen te configureren, kunnen we ook SQL-instructies en andere logboekinstructies scheiden in verschillende logbestanden om de zaken schoon te houden.