Sobes.tech
Middle
240

Aké úrovne izolácie transakcií sú podporované v JDBC?

Odpoveď od AI

sobes.tech AI

V JDBC sú podporované nasledujúce úrovne izolácie transakcií:

  1. TRANSACTION_NONE: Pripojenie nepodporuje transakcie.
  2. TRANSACTION_READ_UNCOMMITTED: Transakcia umožňuje čítanie neoverených údajov z iných transakcií (špinavé čítanie).
  3. TRANSACTION_READ_COMMITTED: Transakcia vidí iba údaje, ktoré boli potvrdené inými transakciami. Špinavé čítanie je vylúčené, ale môžu nastať nevratné čítania.
  4. TRANSACTION_REPEATABLE_READ: Transakcia vidí pri opakovaných čítaniach rovnaké údaje, ak ich sama nezmenila. Vylučuje špinavé čítanie a nevratné čítania, ale môžu sa vyskytnúť fantómy.
  5. TRANSACTION_SERIALIZABLE: Najvyššia úroveň izolácie. Transakcie sa vykonávajú tak, ako keby prebiehali sekvenčne. Vylučuje špinavé čítanie, nevratné čítania a fantómy. Zabezpečuje maximálnu konzistenciu, ale môže znížiť výkon.

Úroveň izolácie možno nastaviť pre spojenie pomocou metódy Connection.setTransactionIsolation(int level). Príklad:

// Nastavenie úrovne na Repeatable Read
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

Predvolená hodnota závisí od konkrétneho systému správy databáz.

Na získanie aktuálnej úrovne izolácie sa používa metóda Connection.getTransactionIsolation():

int isolationLevel = connection.getTransactionIsolation();
// Kontrola aktuálnej úrovne
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
    System.out.println("Aktuálna úroveň izolácie je READ_COMMITTED");
}

Je dôležité starostlivo vybrať úroveň izolácie, vyvažujúc medzi konzistenciou údajov a výkonom aplikácie.