Sobes.tech
Middle

Quels niveaux d'isolation des transactions sont pris en charge par JDBC?

sobes.tech IA

Réponse de l'IA

En JDBC, les niveaux d’isolation de transaction suivants sont pris en charge:

  1. TRANSACTION_NONE : La connexion ne supporte pas les transactions.
  2. TRANSACTION_READ_UNCOMMITTED : La transaction permet de lire des données non validées d’autres transactions (lecture sale).
  3. TRANSACTION_READ_COMMITTED : La transaction ne voit que les données validées par d’autres transactions. La lecture sale est exclue, mais des lectures non répétables peuvent se produire.
  4. TRANSACTION_REPEATABLE_READ : La transaction voit les mêmes données lors de lectures répétées, sauf si elles ont été modifiées par la même transaction. Elle exclut la lecture sale et les lectures non répétables, mais des fantômes peuvent apparaître.
  5. TRANSACTION_SERIALIZABLE : Le niveau d’isolation le plus élevé. Les transactions s’exécutent comme si elles étaient séquentielles. Elle exclut la lecture sale, les lectures non répétables et les fantômes. Elle garantit la cohérence maximale, mais peut réduire la performance.

Le niveau d’isolation peut être défini pour la connexion via la méthode Connection.setTransactionIsolation(int level). Exemple:

// Définir le niveau d’isolation à Repeatable Read
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

La valeur par défaut dépend du SGBD spécifique.

Pour obtenir le niveau d’isolation actuel, utilisez la méthode Connection.getTransactionIsolation():

int isolationLevel = connection.getTransactionIsolation();
// Vérifier le niveau actuel
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
    System.out.println("Le niveau d’isolation actuel est READ_COMMITTED");
}

Il est important de choisir le niveau d’isolation en équilibrant cohérence des données et performance de l’application.