Hibernate / JPA
Pour activer l’affichage des requêtes SQL générées par Hibernate, on connait le classique show_sql
, qui peut être configurée dans le fichier persistence.xml
.
<property name="hibernate.show_sql">true</property>
Cette option est pratique, mais a quelques défauts importants :
-
Les requêtes sont affichées dans la sortie standard, ce serait mieux de les avoir dans les logs configurés.
-
Il manque la valeur des paramètres passés.
-
Les requêtes sont peu lisibles car sur une ligne.
Pour envoyer les logs dans Log4J ou Logback, il faut désactiver l’option show_sql
et activer le logger org.hibernate.SQL
en debug.
<logger name="org.hibernate.SQL" level="DEBUG" />
Les informations sur les paramètres sont envoyées dans le logger org.hibernate.type
, au niveau trace.
<logger name="org.hibernate.type" level="TRACE"/>
Ce logger concerne aussi les valeurs récupérées des requêtes.
Enfin, pour une meilleure mise en forme des requêtes, il faut activer l’option format_sql
. Ceci fonctionne avec l’option show_sql
ou le logger org.hibernate.SQL
.
<property name="hibernate.format_sql">true</property>
Hibernate avec Spring Boot
Lorsqu’on utilise Hibernate avec Spring Boot, la configuration est centralisée dans le fichier application.properties
, ou son équivalent YAML.
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE