Vous pour configurer un délai d'attente pour les instructions SQL et un nombre maximum de lignes pour pureQuery à retourner dans les résultats de l'interrogation.
Pourquoi et quand exécuter cette tâche
Vous pouvez définir les valeurs de ces propriétés de manière globale pour toutes les instructions DML SQL exécutées par votre application pureQuery ou de manière locale pour toutes les instructions DML SQL utilisées par l'application avec l'instance d'une implémentation de l'interface Data.
Vous ne pouvez pas les définir de manière locale pour les instructions individuelles.
pureQuery
transmet les valeurs de ces propriétés aux méthodes JDBC Statement correspondantes.
- queryTimeoutInSeconds
- Nombre de secondes à attendre avant l'exécution de l'instruction DML SQL.
Si l'instruction ne se termine pas dans le délai indiqué, pureQuery émet une exception d'exécution provoquée par une SQLException. La valeur 0 permet d'exécuter indéfiniment les instructions.
- maxResultsRow
- Nombre maximum de lignes qu'une instruction retourne dans les résultats de l'interrogation.
Les lignes sont supprimées une fois que le nombre de lignes atteint cette limite.
Une valeur de 0 permet aux résultats de l'interrogation de contenir un nombre de lignes indéfini.
Si vous souhaitez configurer le nombre maximum de lignes pour chaque instruction plutôt que pour toutes les instructions de votre application qui retournent des résultats d'interrogation, deux choix s'offrent à vous :
- Utilisez la clause FETCH FIRST n ROWS dans vos instructions ou la syntaxe équivalente prise en charge par votre base de données cible.
- Utilisez un objet ResultHandler traitant un nombre limité de lignes. Par exemple, vous pouvez utiliser un objet IteratorPagingResultHandler.
Procédure
Pour définir les valeurs de ces propriétés, suivez l'une de ces deux étapes. pureQuery recherche les valeurs dans l'ordre d'apparition des deux méthodes.
- Définissez les valeurs localement dans un objet Properties. Transmettez ensuite l'objet Properties dans une méthode DataFactory.getData() acceptant ce type d'objet.
Les paramètres locaux sont prioritaires sur les paramètres globaux.
Par exemple, vous pouvez créer un objet Properties, définir les valeurs et transmettre l'objet à la méthode getData() comme suit :
java.util.Properties myPdqProperties = new java.util.Properties();
myPdqProperties.setProperty("pdq.queryTimeoutInSeconds", "5");
myPdqProperties.setProperty(“pdq.maxResultRows”, "100");
Connection connection = ...
Data data = DataFactory.getData (com.MyInterface.class, connection, myPdqProperties);
- Définissez les propriétés globalement dans un fichier pdq.properties. Vous pouvez placer ce fichier soit sur le système de fichiers, soit dans le
chemin d'accès aux classes de votre application.
Les paramètres locaux sont prioritaires sur les paramètres globaux.
Par exemple, vous pouvez ajouter les entrées suivantes dans un fichier pdq.properties :
pdq.queryTimeoutInSeconds = 5
pdq.maxResultRows = 100
Par défaut, pureQuery s'attend à ce que le fichier porte le nom de pdq.properties
et qu'il se trouve dans le chemin d'accès aux classes de votre application.
Si vous utilisez un nom de fichier différent et/ou placez le fichier en un point différent, utilisez la propriété système JVM
configFile afin de pointer vers le fichier lorsque vous exécutez votre application, comme suit :
-Dpdq.configFile=nom-chemin-et-fichier ou nom-ressource package-Java.application
Si
vous développez une application Web, placez le fichier pdq.properties dans le dossier
WEB-INF/classes de votre application ou dans un fichier JAR du dossier WEB-INF/lib.
Si vous développez une application
autonome, placez le fichier pdq.properties dans n'importe quel dossier ou fichier JAR se trouvant dans le chemin d'accès aux classes pour l'application.