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í:
TRANSACTION_NONE: Pripojenie nepodporuje transakcie.TRANSACTION_READ_UNCOMMITTED: Transakcia umožňuje čítanie neoverených údajov z iných transakcií (špinavé čítanie).TRANSACTION_READ_COMMITTED: Transakcia vidí iba údaje, ktoré boli potvrdené inými transakciami. Špinavé čítanie je vylúčené, ale môžu nastať nevratné čítania.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.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.