Interceptez les instructions JDBC dans la base de données à l'aide de P6Spy dans une application de mise en veille prolongée
Question
Je développe une application console hibernate et je me réfère à cet article http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ pour configurer le P6Spy afin de voir quelle est la valeur réelle du "(?)" du SQL généré par Hibernate.
La configuration devrait fonctionner correctement car je peux voir les messages d'information/de débogage émis par P6Spy lors du démarrage de l'application.Cependant, après cela, P6Spy semble ne pouvoir intercepter aucune instruction JDBC.À partir du journal généré par hibernate (par exemple : Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)
), on peut être sûr que les instructions JDBC sont déjà envoyées à la base de données.
Voici mon paramètre :
mise en veille prolongée.cfg.xml
- Déjà spécifié pour utiliser le pilote P6Spy:
<property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
- Déjà activé la propriété hibernate.show_sql:
<property name="hibernate.show_sql">true</property>
espion.propriétés
- Déjà modifié pour utiliser mon pilote JDBC de base de données réel, Filter Set to False, y compris les catégories déjà définies explicitement pour enregistrer quoi que ce soit.
module.log=com.p6spy.engine.logging.P6LogFactory realdriver=oracle.jdbc.driver.OracleDriver filter=false dateformat=yyyy.MM.dd HH:mm:ss excludecategories= includecategories=error, info, batch, debug,statement,commit,rollback,result appender=com.p6spy.engine.logging.appender.StdoutLogger
Est-ce que je manque un paramètre important ??
La solution 3
Finalement, j'abandonne P6Spy
car il s'agit de l'ancienne bibliothèque dont la dernière version remonte à 2003.J'ai recours à un autre open source gratuit similaire appelé log4jdbc
pour intercepter les instructions JDBC, voir ce pour plus d'informations si vous êtes intéressé.
Autres conseils
Je n'ai jamais utilisé P6Spy, mais vous pouvez afficher les variables de liaison dans votre journal.Essayez de mettre cela dans votre fichier log4j.properties ou xml.
log4j.category.org.hibernate.type=DEBUG, CONSOLE
La cause habituelle de ce type de problème est que le pilote JDBC est chargé avant le P6SpyDriver.Vous pouvez contourner ce problème en définissant deregisterdrivers=true dans spy.properties.
BTW - Ce problème a été résolu dans la version 2.0-alpha-1.