Mostrar instruções SQL Hibernate / JPA a partir do Spring Boot
1. Visão geral
SpringJDBC eJPA fornecem abstrações sobre APIs JDBC nativas, permitindo que os desenvolvedores acabem com as consultas SQL nativas. No entanto, muitas vezes precisamos ver essas consultas SQL geradas automaticamente e a ordem em que foram executadas para fins de depuração.
Neste tutorial rápido, veremos diferentes maneiras de registrar essas consultas SQL no Spring Boot.
2. Registro de consultas JPA
2.1. Para saída padrão
A maneira mais simples é despejar as consultas para fora do padrão é adicionar o seguinte aapplication.properties:
spring.jpa.show-sql=true
Para embelezar ou imprimir o SQL, podemos adicionar:
spring.jpa.properties.hibernate.format_sql=true
Embora seja extremamente simples,it’s not recommended, pois descarrega tudo diretamente para a saída padrão sem nenhuma otimização de uma estrutura de registro.
Além disso,it doesn’t log the parameters of prepared statements.
2.2. Via Loggers
Agora, vamos ver como podemos registrar as instruções SQL configurando loggers no arquivo de propriedades:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
A primeira linha registra as consultas SQL e a segunda instrução registra os parâmetros da instrução preparada.
A propriedade pretty print também funcionará nessa configuração.
Definindo essas propriedades,logs will be sent to the configured appender. Por padrão, Spring Boot usalogback com um appender de saída padrão.
3. LoggingJdbcTemplate consultas
Para configurar o log de instrução ao usarJdbcTemplate, precisamos das seguintes propriedades:
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
Semelhante à configuração de log da JPA, a primeira linha é para instruções de log e a segunda é para registrar parâmetros de instruções preparadas.
4. Como funciona?
The Spring / Hibernate classes, que geram instruções SQL e definem os parâmetrosalready contain the code for logging them.
No entanto, o nível dessas declarações de log é definido comoDEBUGeTRACE respectivamente, que é inferior ao nível padrão no Spring Boot -INFO.
Ao adicionar essas propriedades, estamos apenas configurando esses registradores no nível necessário.
5. Conclusão
Neste breve artigo, vimos as maneiras de registrar consultas SQL no Spring Boot.
Se escolhermosconfigure multiple appenders, também podemos separar as instruções SQL e outras instruções de log em diferentes arquivos de log para manter as coisas limpas.