Middle
200
JDBC-де транзакция оқшаулануының қандай деңгейлері қолдау көрсетіледі?
AI-дан жауап
sobes.tech AI
JDBC-де келесі транзакция оқшаулану деңгейлері қолдау көрсетіледі:
TRANSACTION_NONE: Байланыс транзакцияларды қолдамайды.TRANSACTION_READ_UNCOMMITTED: Транзакцияда басқа транзакциялардан орын алған деректерді оқуға рұқсат етілген (лаңкестік оқылым).TRANSACTION_READ_COMMITTED: Транзакция тек басқа транзакциялардан бекітілген деректерді көреді. Ланкестік оқылым жоқ, бірақ қайталанбайтын оқылымдар мүмкін.TRANSACTION_REPEATABLE_READ: Транзакция қайталанатын оқылымдарда бірдей деректерді көреді, егер олар транзакциядан өзгертілмеген болса. Ланкестік оқылымды және қайталанбайтын оқылымдарды болдырмайды, бірақ фантомдар мүмкін.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");
}
Деректердің сәйкестігі мен қолданбаның өнімділігін теңестіру үшін оқшаулану деңгейін дұрыс таңдау маңызды.