COMMIT OU conn.setAutoCommit (true)
J'ai remarqué un programmeur à l'aide de COMMIT
autres à l'aide de conn.setAutoCommit(true);
à la fin de la transaction ou revenir quels sont donc les avantages de l'utilisation de l'un plutôt que l'autre?
Où est la différence?
conn.setAutoCommit(true);
sur
statement.executeQuery(query);
statement.commit();
source d'informationauteur Motasem
Vous devez vous connecter pour publier un commentaire.
Vous, en général, d'utiliser
Connection.commit()
et pasConnection.setAutoCommit(true)
pour valider une transaction, sauf si vous souhaitez vous passer de l'aide de la transaction de la transaction par rapport' modèle de validation automatique.Cela dit, appelant
Connection.setAutoCommit(true)
au cours d'une transaction permettra de valider la transaction (si le pilote est conforme à l'article 10.1.1 JDBC 4.1 spec). Mais vous devriez vraiment jamais le faire si vous voulez dire à rester à validation automatique après, comme l'activation /la désactivation de la validation automatique sur une connexion peut être plus élevé, au-dessus sur une connexion plus simplement à la commettre (par exemple parce qu'il a besoin de basculer entre les responsables de la transaction, de faire des vérifications supplémentaires, etc).Vous devez également utiliser
Connection.commit()
et de ne pas utiliser le SQL natif de commandeCOMMIT
. Comme détaillé dans la documentation de connexion:Le truc, c'est que des commandes comme
commit()
etsetAutoCommit(boolean)
peut faire plus de travail dans le sol en arrière, comme la fermeture deResultSets
et la fermeture ou la réinitialisation deStatements
. À l'aide de la commande SQLCOMMIT
permettra de contourner cela et le potentiel de mettre votre chauffeur /connexion dans un état incorrect.L'utilisation de
conn.setAutoCommit();
s'applique à la connexion et vous donne la possibilité d'exécuter X requêtes en une seule opération, ou d'utiliser une seule transaction parexecute
Que l'API décrit:
Pour un cas simple:
sera le même que: