JEE propose une solution pour les transaction au travers de l’API JTA (Java Transaction API).

Pour le moment nous n’utilisions pas de transaction ? Et si, par défaut Java utilise le mode auto-commit (démarrer automatiquement la transaction et sera validé dès la mise à jour en base de données).

Mais ce mode auto-commit ne nous permet pas de valide regrouper opérations dans la même transaction. Nous devons donc le désactiver sur la Connection

Connection connection = DriverManager.getConnection("url");
connection.setAutoCommit(false);

Maintenant toutes les opérations vous être mise en attente de commit, et c’est à nous manuellement de déclencher le commit (lorsqu’on considère que tout c’est bien passé)

connection.commit();

Et s’il y a eu un problème, alors une exception SQLException est automatiquement levée. Donc nous réaliserons un rollback

connection.rollback() 

Code complet

Connection connection = null;
 
try {
    Connection connection = DriverManager.getConnection("url");
    connection.setAutoCommit(false);
 
    PreparedStatement pS = connection.prepareStatement("UPDATE client SET nom=? WHERE id=?");
    pS.setString(1, "Adrien");
    ps.setLong(2, 1L)
 
    connection.commit(); // on commit
} catch(SQLException e) {
    connection.rollback();
}