Ecrasement des instructions SQL dans les applications utilisant les méthodes intégrées

Si vous utilisez des méthodes intégrées dans une application, vous pouvez remplacer, lors de l'exécution, les instructions SQL de ces méthodes par des instructions SQL identiques.

Lorsque vous appelez la méthode DataFactory.getData() pour créer une implémentation de l'interface Data, vous pouvez transmettre un objet java.util.Map<Object,Object>. Les clés de Map sont les instructions SQL que vous voulez remplacer. Les valeurs de Map sont les instructions SQL que vous souhaitez utiliser à la place.

Lorsque vous appelez des méthodes dans l'objet Data possédant un paramètre String sql, pureQuery tente de correspondre à chaque instruction SQL que vous transmettez à ces méthodes avec les clés de l'objet Map. Dès qu'il y a une correspondance pour une instruction SQL utilisée comme une clé, pureQuery utilise l'instruction SQL utilisée comme étant la valeur correspondante dans la mappe. S'il n'y a aucune correspondance, pureQuery exécute l'instruction SQL d'origine.

Restrictions

Les instructions SQL transmises aux méthodes doivent correspondre exactement aux instructions SQL utilisées comme des clés. Par exemple, si l'espacement ou la mise en majuscule diffère, deux instructions SQL sinon identiques ne correspondent pas.

Une valeur SQL doit être suffisamment similaire à la clé SQL pour une exécution correcte lorsqu'une méthode Data est appelée. Par exemple, une instruction INSERT ne peut pas remplacer une instruction SELECT.

Une clé et une valeur SQL doivent avoir des entrées et sorties compatibles. Par exemple, une instruction SQL SELECT qui renvoie les objets Automobile ne peut pas remplacer une instruction SELECT renvoyant les propriétés des objets Airplane.

Exemples

Un exemple simple remplace les instructions SQL utilisées dans un système de production par celles testées dans un système de test. Cependant, cela peut être utile d'écraser les instructions SQL dans des situations plus compliquées.

Supposez que vous ayez besoin d'exécuter des instructions SQL manipulant différentes quantités de données. Par exemple, vous pouvez avoir besoin de rapports de métier récapitulant les données par jour, par semaine ou par trimestre. Vous pouvez également limiter les requêtes que les employés lancent par leur niveau d'accès de sécurité. Dans de telles situations, la différence entre une exécution de l'application et une autre est due aux variantes de l'instruction SQL exécutée.

Avant pureQuery, les solutions permettant de résoudre ce type de problème comprenaient des options comme celles-ci :

Ces stratégies fonctionnent vraiment. Cependant, pureQuery vous permet de créer une application unique pouvant accéder à une instance de l'objet Map qui est peut-être sérialisée dans un fichier ou sinon accessible pour une application en cours d'exécution. Le choix de l'objet Map détermine ce que fait l'application.

Lorsque vous n'indiquez pas d'objet Map, votre application peut exécuter les versions de base, par défaut, de faible impact, de haute sécurité des instructions SQL. Lorsque vous indiquez un objet Map, il peut contenir les instructions SQL qui indiquent les niveaux adéquats d'accès à l'utilisateur exécutant l'application.


Commentaires