Maison > Java > javaDidacticiel > Dois-je créer de nouveaux PreparedStatements pour chaque opération SQL ou réutiliser la même ?

Dois-je créer de nouveaux PreparedStatements pour chaque opération SQL ou réutiliser la même ?

Patricia Arquette
Libérer: 2024-10-31 22:42:02
original
385 Les gens l'ont consulté

 Should I create new PreparedStatements for each SQL operation or reuse the same one?

Réutilisation d'une instruction PreparedStatement pour plusieurs opérations

Dans les scénarios où une seule connexion est utilisée sans pool de connexions, une question se pose concernant l'approche à suivre créer et utiliser des PreparedStatements. Une option consiste à créer une nouvelle instance PreparedStatement pour chaque opération SQL/DML :

<code class="java">for (int i=0; i<1000; i++) {
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setObject(1, someValue);
    preparedStatement.executeQuery();
    preparedStatement.close();
}
Copier après la connexion

Alternativement, la même instance PreparedStatement peut être réutilisée en effaçant ses paramètres et en réinitialisant les valeurs :

<code class="java">PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i=0; i<1000; i++) {
    preparedStatement.clearParameters();
    preparedStatement.setObject(1, someValue);
    preparedStatement.executeQuery();
}
preparedStatement.close();
Copier après la connexion

Recommandation et considérations multithread

Pour une efficacité optimale, envisagez d'exécuter les opérations PreparedStatement par lots :

<code class="java">public void executeBatch(List<Entity> entities) throws SQLException { 
    try (
        Connection connection = dataSource.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL);
    ) {
        for (Entity entity : entities) {
            statement.setObject(1, entity.getSomeProperty());
            // ...
            statement.addBatch();
        }

        statement.executeBatch();
    }
}</code>
Copier après la connexion

Lorsque vous travaillez avec des environnements multithread, il est crucial d'acquérir et fermez les connexions et les instructions dans la portée la plus courte possible au sein du même bloc de méthode. Suivre l'idiome JDBC en utilisant try-with-resources garantit que la gestion des ressources est gérée de manière appropriée.

Pour les lots transactionnels, désactivez la validation automatique sur la connexion et ne validez qu'une fois que tous les lots se sont terminés avec succès pour éviter d'éventuelles incohérences de base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal