1. Información general
Spring JDBC y JPA proporcionan abstracciones sobre las API de JDBC nativas, lo que permite a los desarrolladores eliminar las consultas SQL nativas. Sin embargo, a menudo necesitamos ver esas consultas SQL generadas automáticamente y el orden en el que se ejecutaron con fines de depuración.
En este tutorial rápido, veremos diferentes formas de registrar estas consultas SQL en Spring Boot.
2. Registro de consultas JPA
2.1. A salida estándar
La forma más sencilla es volcar las consultas a la salida estándar y agregar lo siguiente a application.properties :
spring.jpa.show-sql=true
Para embellecer o imprimir bastante el SQL, podemos agregar:
spring.jpa.properties.hibernate.format_sql=true
Si bien esto es extremadamente simple, no se recomienda, ya que descarga todo directamente a la salida estándar sin ninguna optimización de un marco de registro.
Además, no registra los parámetros de declaraciones preparadas.
2.2. A través de Loggers
Ahora, veamos cómo podemos registrar las declaraciones SQL configurando registradores en el archivo de propiedades:
logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
La primera línea registra las consultas SQL y la segunda declaración registra los parámetros de la declaración preparada.
La propiedad de impresión bonita también funcionará en esta configuración.
Al establecer estas propiedades, los registros se enviarán al appender configurado . De forma predeterminada, Spring Boot usa logback con un appender de salida estándar.
3. Registro de consultas de JdbcTemplate
Para configurar el registro de sentencias cuando se usa JdbcTemplate , necesitamos las siguientes propiedades:
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
Similar a la configuración de registro de JPA, la primera línea es para las declaraciones de registro y la segunda es para registrar los parámetros de las declaraciones preparadas.
4. ¿Cómo funciona?
Las clases Spring / Hibernate, que generan sentencias SQL y establecen los parámetros, ya contienen el código para registrarlas .
Sin embargo, el nivel de esas declaraciones de registro se establece en DEBUG y TRACE respectivamente, que es más bajo que el nivel predeterminado en Spring Boot - INFO .
Al agregar estas propiedades, simplemente estamos configurando esos registradores al nivel requerido.
5. Conclusión
En este breve artículo, hemos analizado las formas de registrar consultas SQL en Spring Boot.
Si optamos por configurar varios añadidos, también podemos separar las declaraciones SQL y otras declaraciones de registro en diferentes archivos de registro para mantener las cosas limpias.