Donc, je n'arrête pas d'entendre que PreparedStatements sont bonnes pour la performance.
Nous avons une application Java dans lequel on utilise la régulière "Déclaration" plus de, nous utilisons le "PreparedStatement'. Tout en essayant de se déplacer vers l'utilisation de plus PreparedStatements, je suis en train d'essayer d'obtenir une compréhension plus approfondie de la façon dont PreparedStatements travail sur le côté client et côté serveur.
Donc, si nous avons certaines des opérations CRUD et de mettre à jour un objet à plusieurs reprises dans l'application, est-il utile d'utiliser un PS? Je comprends que nous allons avoir à fermer le PS à chaque fois sinon il en résultera un curseur de fuite.
Alors, comment peut-il aider avec la performance? Le pilote est de mettre en cache le fichier de déclaration et de me donner une copie de la prochaine fois que je fais de la connexion.prepareStatement? Ou ne le serveur de base de données de l'aide?
Je comprends l'argument sur les prestations de la sécurité de PreparedStatements et j'apprécie les réponses ci-dessous qui mettent l'accent sur elle. Cependant j'ai vraiment envie de garder cette discussion a porté sur les avantages de performance de PreparedStatements.
Mise à jour: Quand je dis que la mise à jour des données, je veux dire vraiment plus, en termes de méthode au hasard d'être appelé plusieurs fois. Je comprends l'avantage dans la réponse ci-dessous qui vous demande de ré-utiliser l'instruction à l'intérieur d'une boucle.
// some code blah blah
update();
// some more code blah blah
update();
....
public void update () throws SQLException{
try{
PreparedStatement ps = connection.prepareStatement("some sql");
ps.setString(1, "foobar1");
ps.setString(2, "foobar2");
ps.execute();
}finally {
ps.close();
}
}
Il n'y a aucun moyen de réutiliser le 'ps' objet java, et je comprends que la connexion réelle.prepareStatement appel est assez cher.
Qui est ce qui me ramène à la question initiale. Est-ce que "certains" sql " PreparedStatement encore être mis en cache et réutilisés sous les couvertures que je ne sais pas sur?
Je devrais aussi mentionner que nous avons le support de plusieurs bases de données.
Merci à l'avance.