Sobes.tech
Middle
200

JDBC-де транзакция оқшаулануының қандай деңгейлері қолдау көрсетіледі?

AI-дан жауап

sobes.tech AI

JDBC-де келесі транзакция оқшаулану деңгейлері қолдау көрсетіледі:

  1. TRANSACTION_NONE: Байланыс транзакцияларды қолдамайды.
  2. TRANSACTION_READ_UNCOMMITTED: Транзакцияда басқа транзакциялардан орын алған деректерді оқуға рұқсат етілген (лаңкестік оқылым).
  3. TRANSACTION_READ_COMMITTED: Транзакция тек басқа транзакциялардан бекітілген деректерді көреді. Ланкестік оқылым жоқ, бірақ қайталанбайтын оқылымдар мүмкін.
  4. TRANSACTION_REPEATABLE_READ: Транзакция қайталанатын оқылымдарда бірдей деректерді көреді, егер олар транзакциядан өзгертілмеген болса. Ланкестік оқылымды және қайталанбайтын оқылымдарды болдырмайды, бірақ фантомдар мүмкін.
  5. TRANSACTION_SERIALIZABLE: Ең жоғары оқшаулану деңгейі. Транзакциялар бір-бірінен бөлек орындалатын сияқты орындалады. Ланкестік оқылымды, қайталанбайтын оқылымдарды және фантомдарды болдырмайды. Максималды сәйкестік қамтамасыз етеді, бірақ өнімділікті төмендетуі мүмкін.

Оқшаулану деңгейін Connection.setTransactionIsolation(int level) әдісі арқылы орнатуға болады. Мысал:

// Repeatable Read деңгейін орнату
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);

Әдепкі мән нақты дерекқор басқару жүйесіне байланысты.

Ағымдағы оқшаулану деңгейін алу үшін Connection.getTransactionIsolation() әдісі пайдаланылады:

int isolationLevel = connection.getTransactionIsolation();
// Ағымдағы деңгейді тексеру
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
    System.out.println("Ағымдағы оқшаулану деңгейі - READ_COMMITTED");
}

Деректердің сәйкестігі мен қолданбаның өнімділігін теңестіру үшін оқшаулану деңгейін дұрыс таңдау маңызды.