Middle
239
Jaké úrovně izolace transakcí jsou podporovány v JDBC?
Odpověď od AI
sobes.tech AI
V JDBC jsou podporovány následující úrovně izolace transakcí:
TRANSACTION_NONE: Připojení nepodporuje transakce.TRANSACTION_READ_UNCOMMITTED: Transakce umožňuje číst necommitnutá data z jiných transakcí (špinavé čtení).TRANSACTION_READ_COMMITTED: Transakce vidí pouze data, která byla potvrzena jinými transakcemi. Špinavé čtení je vyloučeno, ale mohou nastat nevratná čtení.TRANSACTION_REPEATABLE_READ: Transakce vidí při opakovaných čteních stejná data, pokud je sama nezměnila. Vylučuje špinavé čtení a nevratná čtení, ale mohou nastat fantomy.TRANSACTION_SERIALIZABLE: Nejvyšší úroveň izolace. Transakce jsou prováděny tak, jako by probíhaly sekvenčně. Vylučuje špinavé čtení, nevratná čtení a fantomy. Zajišťuje maximální konzistenci, ale může snížit výkon.
Úroveň izolace lze nastavit pro spojení pomocí metody Connection.setTransactionIsolation(int level). Příklad:
// Nastavení úrovně izolace na Repeatable Read
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
Výchozí hodnota závisí na konkrétním systému správy databází.
Pro získání aktuální úrovně izolace se používá metoda Connection.getTransactionIsolation():
int isolationLevel = connection.getTransactionIsolation();
// Kontrola aktuální úrovně
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
System.out.println("Aktuální úroveň izolace je READ_COMMITTED");
}
Je důležité pečlivě vybírat úroveň izolace, vyvažujíc mezi konzistencí dat a výkonem aplikace.