2011-12-26 3 views
0

при печати уровня изоляциикак установить целочисленное значение для уровня изоляции транзакций

DatabaseMetaData dbMetaData = conn.getMetaData(); 
      if (dbMetaData       .supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE)) { 
        System.out.println("Transaction Isolation level= " 
            + conn.getTransactionIsolation()); 
        System.out.println(dbMetaData.getDefaultTransactionIsolation()); 
      } 

для соединения я получаю целочисленное значение 4 и для базы данных я получить значение 2

I хочу установить уровень изоляции как SERIALIZABLE, поскольку он, похоже, работает для большинства проблем (это то, что я слышал в любом случае: - /), но я не понимаю, как установить его, поскольку он запрашивает значение int

conn.setTransactionIsolation(level); 

Что означают целые уровни и в каком порядке уровни транзакций? Я использую базу данных mysql

ответ

2

Класс Connection должен иметь все уровни изоляции, определенные как константы. Перейдите в Javadoc, и вы увидите константы.

conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); 

ПРИМЕЧАНИЕ: TRANSACTION_SERIALIZABLE может и не быть тем, что вы хотите. Я предлагаю вам прочитать this tutorial.

печать читаемой строка

String getReadableLevel(int isolation) 
{ 
String result=""; 

switch(isolation) 
{ 
    case Connection.TRANSACTION_SERIALIZABLE: result="TRANSACTION_SERIALIZABLE";break; 
    ...//u get the idea 
} 
return result; 
} 
+0

да я читал, что оттуда только я думал, что я должен установить его в качестве seriliazable, поскольку он предотвращает всю грязную проблему чтения и т.д. Но как насчет целых чисел и уровней ??? как узнать, какое целое относится к тому, какой уровень вызывает, если его уже установлено как seriliazable, не имеет смысла снова установить его;) – Nav

+0

@Nav Да, это предотвращает все это, но также имеет наименьшую производительность/пропускную способность. Я просто убедился, что вы знаете о компромиссах. Кроме того, если я ответил на ваш вопрос, то PLS принять его как ответ –

+0

@Panga поблагодарить u за ответ +1 :), но я хотел знать о целочисленных уровнях conn.getTransactionIsolation(), как я могу сделать это более понятным, потому что я Не знаю, что эти целые числа ссылаются на .Ex, если он показывает, что по умолчанию он поддерживает TRANSACTION_READ_COMMITTED или что-то у вас знает – Nav

Смежные вопросы