Sobes.tech
Middle

Milyen tranzakció elszigeteltségi szintek támogatottak a JDBC-ben?

sobes.tech MI

Válasz az MI-től

A JDBC támogatja a tranzakciók alábbi elszigeteltségi szintjeit:

  1. TRANSACTION_NONE: A kapcsolat nem támogat tranzakciókat.
  2. TRANSACTION_READ_UNCOMMITTED: A tranzakció lehetővé teszi nem megerősített adatok olvasását más tranzakciókból (szennyezett olvasás).
  3. TRANSACTION_READ_COMMITTED: A tranzakció csak azokat az adatokat látja, amelyeket más tranzakciók megerősítettek. A szennyezett olvasás kizárt, de nem ismételhető olvasások fordulhatnak elő.
  4. TRANSACTION_REPEATABLE_READ: A tranzakció ugyanazokat az adatokat látja ismételt olvasások során, kivéve, ha azokat ugyanaz a tranzakció módosította. Kizárja a szennyezett olvasást és az nem ismételhető olvasásokat, de lehetnek fantomok.
  5. TRANSACTION_SERIALIZABLE: A legmagasabb izolálási szint. A tranzakciók úgy futnak, mintha egymás után történnének. Kizárja a szennyezett olvasást, az nem ismételhető olvasásokat és a fantomokat. Maximális konzisztenciát biztosít, de csökkentheti a teljesítményt.

Az izolálási szintet a Connection.setTransactionIsolation(int level) metódussal lehet beállítani. Példa:

// Repeatable Read szint beállítása
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

Az alapértelmezett érték a konkrét adatbázis-kezelő rendszertől függ.

A jelenlegi izolálási szint lekérdezéséhez a Connection.getTransactionIsolation() metódus használható:

int isolationLevel = connection.getTransactionIsolation();
// Aktuális szint ellenőrzése
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
    System.out.println("A jelenlegi izolálási szint a READ_COMMITTED");
}

Fontos az izolálási szintet gondosan kiválasztani, az adatok konzisztenciája és az alkalmazás teljesítménye közötti egyensúly megtalálása érdekében.