Je cherche à réduire les allers-retours dans mon application pour améliorer les performances. Je veux utiliser PreparedStatement
s pour leur multitude d'avantages.SQL: Instructions groupées avec variables liées
Voici un exemple de ce que je suis venu avec .. généralisée avec des détails élidés ..
Class.forName("..Driver");
Connection connection = DriverManager.getConnection(..);
PreparedStatement statement = connection.prepareStatement("UPDATE Table SET XmlData = ? WHERE SomeGUID = ?; INSERT INTO SomeTable (Col1,Col2) VALUES (?, ?)");
try{
statement.setString(1, "<XmlData></XmlData>");
statement.setString(2, "32ABD5-438B0-..");
statement.setString(3, "ABC");
statement.setString(4, "XYZ");
statement.execute();
connection.commit();
}
catch {
connection.rollback();
}
finally {
statement.close();
connection.close();
}
(Encore une fois, ce n'est pas le code réel, juste un exemple simplifié)
En général, j'essaie d'exécuter plusieurs instructions d'insertion/mise à jour dans une instruction unique afin de réduire le trafic aller-retour. Est-ce un moyen efficace de le faire ou existe-t-il une approche plus acceptée?
Je pourrais avoir des milliers d'instructions pour une seule transaction. Je vais probablement segmenter l'instruction en blocs de taille raisonnable pour éviter les délais d'attente sur l'exécution d'une seule instruction.
Je prendrai en charge plusieurs fournisseurs de bases de données, mais j'utiliserai SQL ANSI pour qu'il n'y ait pas de problème. Si nécessaire, je peux tirer parti de l'intelligence de mon DAL. Donc, ceci est un non-problème.
Des astuces/suggestions?