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:
TRANSACTION_NONE: A kapcsolat nem támogat tranzakciókat.TRANSACTION_READ_UNCOMMITTED: A tranzakció lehetővé teszi nem megerősített adatok olvasását más tranzakciókból (szennyezett olvasás).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ő.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.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.