29.9.04

Proxy dynamiques et JDBC

Il m'est arrivé voila quelques temps de devoir corriger le composant d'un logiciel se connectant avec une base de données. Avec Oracle, certaines chaines de caract?res vides étaient interprésées comme null. J'ai décidé d'ajouter une couche de contrôle plutôt que de modifier le code.
La beauté d'un driver JDBC rédide dans le fait qu'il est réutilisable ? 100% sans modification de code. Quelques param?tres dans un fichier de configuration suffisent. Il me fallait développer un driver encapsulant le driver Oracle standard pour effectuer les modifications nécessaires ? mon logiciel.
Le principe est simple, l'impémentatin un peu moins. Pour présenter rapidement l'implémentaion d'un driver JDBC, il s'agit d'un ensemble de classes implémentant des interfaces bien connues du package java.sql. C'est la classe ResulSet qui sert ? récupérer les données d'une requ?te SQL de type SELECT. L'idée est de faire renvoyer par notre driver un objet ResultSet patché pour remplacer les valeurs null renvoyées par un appel ? ResultSet.getString() par une String de longueur 0. J'ai choisi d'utilkiser les proxy dynamiques disponibles depuis le JDK 1.3.
Nous allons créer un proxy sur les classes ConnectionManager, Statement et ResultSet. La chaine de connection JDBC permettra de retrouver le driver driver devant ?tre encapsulé......