Présentation des interfaces d'objet d'accès aux données (DAO) et des méthodes annotées

Lorsque vous créez des méthodes annotées, vous pouvez coder les requêtes SQL, les instructions de mise à jour ou les instructions CALL dans les annotations des méthodes définies dans vos propres interfaces. Vous pouvez définir des interfaces d'objet d'accès aux données (DAO) avec vos méthodes annotées.

L'utilisation des méthodes annotées présente les avantages suivants :

Définition de code SQL dans les annotations sur les méthodes dans des interfaces personnalisées

Vous pouvez créer une interface personnalisée qui suit le modèle d'objet d'accès aux données (DAO) en écrivant une interface qui crée des objets d'accès aux données. Une fois que vous avez terminé d'écrire l'interface, vous exécutez l'utilitaire pureQuery Generator pour générer la définition d'une classe qui met en oeuvre l'interface. Lorsque vous écrivez le code pour votre application, vous pouvez créer des instances de cette classe d'implémentation, puis appeler les méthodes qui sont implémentées dans cette instance. Vous pouvez utiliser des objets Java, des beans et des collections pour fournir des paramètres à vos méthodes et pour recevoir les résultats des requêtes.

Par exemple, la méthode suivante utilise une annotation @Select et apparaîtrait dans une interface nommée CustomerQuery, dans laquelle vous définissez des méthodes de requête ou de mise à jour dans un tableau nommé CUSTOMER.

@Select(sql="SELECT CUSTID, NAME FROM CUSTOMER WHERE REGION = ?1") 
List<Customer> getCustomersInRegion(int r);

Après avoir compilé l'interface et utilisé l'utilitaire pureQuery Generator pour créer une classe nommée CustomerQueryImpl qui implémente l'interface, une application peut appeler la méthode et récupérer les résultats de la requête dans la liste retournée.

Connection con = DriverManager.getConnection(...);
CustomerQuery cQuery = DataFactory.getData(CustomerQuery.class, con);

int region = 123;

List<Customer> customersInRegion = cQuery.getCustomersInRegion(region);

Le code effectue les opérations suivantes :

  1. Création d'une connexion à la base de données.
  2. Création d'une instance de CustomerQuery.
  3. Création et initialisation de la variable region.
  4. Appel de la méthode cQuery.getCustomersInRegion() et transmission du résultat dans une nouvelle List d'objets Customer.

Notez que le code fait directement référence à l'interface CustomerQuery, et non à la classe d'implémentation. Vous pouvez compiler vos applications sans dépendance par rapport à la classe d'implémentation qui a été générée.

Définition de code SQL dans les fichiers XML

Vous pouvez utiliser un fichier XML pour remplacer les instructions SQL qui se trouvent dans des annotations sur les méthodes qui sont définies sur une interface. Vous fournissez les déclarations SQL dans le fichier XML et fournissez ce fichier à l'utilitaire pureQuery Generator lorsque vous générez la classe d'implémentation pour l'interface. Ainsi, vous pouvez réutiliser les interfaces dans plusieurs applications lorsque ces dernières sont associées à différentes bases de données.

Par exemple, vous pouvez avoir une application qui fonctionne avec une base de données DB2 et une application similaire qui fonctionne avec une base de données Oracle. Une interface nommée Customer peut contenir les instructions SQL qui sont compatibles avec la base de données DB2. Pour réutiliser l'interface pour la deuxième application, lorsque vous générez la classe d'implémentation pour l'interface Client, vous fournirez à l'utilitaire pureQuery Generator un fichier XML des instructions SQL compatibles avec la base de données Oracle.


Commentaires