Sobes.tech
Middle

Kādi transakciju izolācijas līmeņi tiek atbalstīti JDBC?

sobes.tech AI

Atbilde no AI

JDBC atbalsta šādus transakciju izolācijas līmeņus:

  1. TRANSACTION_NONE: Savienojums neatbalsta transakcijas.
  2. TRANSACTION_READ_UNCOMMITTED: Transakcijā atļauts lasīt neapstiprinātus datus no citām transakcijām (netīrs lasījums).
  3. TRANSACTION_READ_COMMITTED: Transakcija redz tikai apstiprinātus datus no citām transakcijām. Netīrs lasījums ir novērsts, bet var būt nepatiesi lasījumi.
  4. TRANSACTION_REPEATABLE_READ: Transakcija redz vienus un tos pašus datus atkārtotos lasījumos, ja tie nav mainīti pašā transakcijā. Novērš netīru lasījumu un nepatiesus lasījumus, bet var rasties fenomēni.
  5. TRANSACTION_SERIALIZABLE: Augstākais izolācijas līmenis. Transakcijas tiek izpildītas tā, it kā tās būtu secīgas. Novērš netīru lasījumu, nepatiesus lasījumus un fenomēnus. Nodrošina maksimālu saskaņotību, bet var samazināt veiktspēju.

Izolācijas līmeni var iestatīt savienojumam, izmantojot metodi Connection.setTransactionIsolation(int level). Piemērs:

// Iestata atkārtojama lasīšanas līmeni
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

Noklusējuma vērtība ir atkarīga no konkrētās DBMS.

Lai iegūtu pašreizējo izolācijas līmeni, izmanto metodi Connection.getTransactionIsolation():

int isolationLevel = connection.getTransactionIsolation();
// Pārbauda pašreizējo līmeni
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
    System.out.println("Pašreizējais izolācijas līmenis ir READ_COMMITTED");
}

Ir svarīgi izvēlēties izolācijas līmeni, ņemot vērā datu saskaņotību un veiktspēju.