Sobes.tech
Middle
241

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");
}

Маалыматтардын туруктуулугун жана колдонмонун иштөө ылдамдыгын тең салмакта кармоо үчүн бөлүнүү деңгээлин сактык менен тандап алуу маанилүү.