Comment afficher les valeurs de paramètre hibernate sql - P6Spy

Comment afficher les valeurs des paramètres SQL Hibernate - P6Spy

Question

De nombreux développeurs posent des questions sur la question de la valeur du paramètre SQL Hibernate. Comment afficher les valeurs des paramètres Hibernate SQL transmises à la base de données? Hibernate affiche simplement toutes les valeurs des paramètres sous forme de point d'interrogation (?). Avec la propriétéshow_sql, Hibernate affichera toutes les instructions SQL générées, mais pas les valeurs des paramètres SQL.

Par exemple

Hibernate: insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values (?, ?, ?, ?, ?, ?)

Existe-t-il un moyen de consigner ou d'afficher les valeurs exactes des paramètres Hibernate SQL?

Solution - P6Spy

Eh bien, s'il y a une question, il y a une réponse ~

Le P6Spy est une bibliothèque utile pour enregistrer toutes les valeurs d'instructions SQL et de paramètres avant de les envoyer à la base de données. Le P6Spy est gratuit, il est utilisé pour intercepter et enregistrer toutes les instructions SQL de votre base de données dans un fichier journal, et il fonctionne pour toute application utilisant le pilote JDBC.

1. Télécharger la bibliothèque P6Spy

Obtenez le «p6spy-install.jar», vous pouvez le télécharger à partir de

2. Extraire

Extrayez le fichier p6spy-install.jar, recherchezp6spy.jar etspy.properties

3. Ajouter une dépendance de bibliothèque

Ajoutezp6spy.jar dans la dépendance de votre bibliothèque de projet

4. Modifier le fichier de propriétés P6Spy

Modifiez votre fichier de configuration de base de données. Vous devez remplacer votre pilote JDBC existant par le pilote P6Spy JDBC - "com.p6spy.engine.spy.P6SpyDriver"

L'original est le pilote JDBC MySQL - «com.mysql.jdbc.Driver»


  false
  com.mysql.jdbc.Driver
  password
  jdbc:mysql://localhost:3306/example
  root
  org.hibernate.dialect.MySQLDialect
  true

Il a été remplacé par le pilote JDBC P6Spy - "com.p6spy.engine.spy.P6SpyDriver"


  false
  com.p6spy.engine.spy.P6SpyDriver
  
  password
  jdbc:mysql://localhost:3306/example
  root
  org.hibernate.dialect.MySQLDialect
  true

5. Modifier le fichier de propriétés P6Spy

Modifiez le fichier de propriétés P6Spy - «spy.properties»

Remplacez le «vrai pilote» par votre pilote MySQL JDBC existant

realdriver=com.mysql.jdbc.Driver

#specifies another driver to use
realdriver2=
#specifies a third driver to use
realdriver3=

Change the Log file location
Modifiez l'emplacement du fichier journal dans la propriétélogfile, toutes les instructions SQL se connecteront à ce fichier.

les fenêtres

logfile     = c:/spy.log

*nix

logfile     = /srv/log/spy.log

6. Copiez «spy.properties» dans le chemin de classe du projet

Copiez "spy.properties" dans le dossier racine de votre projet, assurez-vous que votre projet peut localiser "spy.properties", sinon il affichera une exception "spy.properties" file not found.

7. Done

Exécutez votre application et effectuez une transaction de base de données, vous remarquerez que toutes les instructions SQL envoyées de l'application à la base de données seront enregistrées dans un fichier que vous avez spécifié dans «spy.properties».

Exemple de fichier journal comme suit.

insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values (?, ?, ?, ?, ?, ?)|
insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values (10.0, 1.1, '2009-12-30', 1.2, 11, 1000000)

Conclusion

Franchement, le P6Spy est vraiment utile pour réduire le temps de débogage des développeurs. Tant que votre projet utilise le pilote JDBC pour la connexion, P6Sqp peut y entrer et enregistrer toutes les instructions SQL et les valeurs de paramètres pour vous.

Pour l'utilisateur Maven

Vous pouvez utiliser Maven pour télécharger la dépendance P6Spy dans vospom.xml

        
        p6spy
        p6spy
        1.3
    

Cependant, le fichier «spy.properties» n'est pas livré dans le package, vous devez le créer vous-même. Vous pouvez télécharger le modèle ici -spy.properties