Hibernate: Afficher les valeurs des paramètres de ses requêtes

hibernate.gif

Qui n'a pas souhaité voir s'afficher, dans la requête sql/hql (query) d'Hibernate, les valeurs des paramètres au lieu des points d'interrogation ?
Par exemple, qui n'a jamais voulu avoir précisément les valeurs au lieu de (?, ?,?) dans la requête sql ci-après tracée par hibernate dans les logs:

insert into domaine  (description, libelle, id) values (?,  ?, ?)

Ce tips indique la marche à suivre.

Rappelons d'abord que vous pourriez ajouter dans la configuration d'Hibernate les deux propriétés suivantes positionnées à true:

  • hibernate.show_sql
  • hibenate.format_sql

Attention la propriété "hibernate.use_sql_comments" peut poser des problèmes avec certains connecteurs JDBC.
Ces connecteurs ont des difficultés avec la présence de /* */.

Revenons à ce qui nous importe. La marche à suivre est :

Ajouter dans le fichier log4j.xml (ou log4j.properties) le bloc qui suit:

 <category name="org.hibernate.type">
       <priority value="TRACE"/>
       <appender-ref ref="CONSOLE"/>
   </category>  

Noter bien le niveau "TRACE".
Avec cela, nous aurons des traces explicites indiquant les valeurs des paramètres. Par exemple (extrait):

Hibernate: 
insert into domaine  (description, libelle, id) values (?, ?, ?)

TRACE- binding 'domaine exemple' to parameter: 1
TRACE- binding 'descript' to parameter: 2
TRACE- binding '1004' to parameter: 3
...... ou encore.....

Hibernate:
    select
        domaine0_.id as col_0_0_ 
    from
        domaine domaine0_ 
    where
        domaine0_.libelle=?
TRACE- binding 'domlibel' to parameter: 1

TRACE- returning '1000' as column: col_0_0_
TRACE- returning '1003' as column: col_0_0_
...

Vous avez en prime les retours de la requête sql.

Vous avez aimé?
merci de le faire savoir.
Enjoy!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.