Toutes les développeurs Java ou Java EE qui utilisent une base de données avec un accès JDBC sont amenés à un moment à tracer les requêtes SQL que leur application exécute.

Ce travail est répétitif, n’a aucune valeur ajoutée pour l’application et pollue le code source de cette dernière. Heureusement un outil est là pour répondre à ce besoin.

C’est en partant de ce constat que j’ai recherché ce qui existait dans le domaine du traçage des requêtes JDBC. Après quelques recherches, je n’ai trouvé qu’un seul outil : P6Spy[1].

Cependant ce composant ne répondait pas à tous mes besoins :

  • Pas de trace des resultsets retournés par une procédure stockée
  • Pas de gestion des paramètres de sortie sur les statements
  • Pas de support des batchs

C’est pourquoi j’ai écris Craftsman Spy. C’est un driver JDBC qui englobe le réel driver utilisé en temps normal par l’application pour accéder à la base de données. Ainsi aucune modification sur le code source de l’application n’est nécessaire pour ajouter les traces JDBC.

Il reste encore quelques fonctionnalités à implémenter[2]. Mais pour le moment il répond à la majorité des cas d’utilisation.

Notes

[1] D’autres outils comme Poolman permettent de tracer les requêtes JDBC, mais ce n’est pas leur but premier.

[2] Et pourquoi ne pas faire une version AOP ?