2015-09-27 3 views
-1

Я создаю автономное приложение Java, которое имеет несколько экранов.Как откат данных с помощью Java, если мы выходим из приложения

Я выполняю много хранимых процедур, которые состоят из множества операторов DML.

Все работают нормально. Но проблема в том, что я должен иметь возможность ROLLBACK данных, которые когда-либо меня модифицировали во всех хранимых процедурах, если пользователь выходит из приложения посередине.

Может кто-нибудь, пожалуйста, помогите мне откат данных. Заранее спасибо.

+0

Это зависит от вашего дизайна. Вы совершаете после каждой успешной транзакции? – user2953113

ответ

1

Вы должны включить автофиксация прочь, и сделать свой собственный совершить/Откат:

try (Connection conn = DriverManager.getConnection(url)) { 
    conn.setAutoCommit(false); 
    try { 
     // do work 
     conn.commit(); 
    } finally { 
     conn.rollback(); 
    } 
} 

Если try блока завершается нормально, все работы привержена. Если «do work» выбрасывает исключение, все откатывается назад.

После commit() блок finally по-прежнему будет звонить rollback(), но поскольку после commit() ничего не произошло, это не-op. Если вам это не нравится, вы можете это сделать:

try (Connection conn = DriverManager.getConnection(url)) { 
    conn.setAutoCommit(false); 
    boolean commit = false; 
    try { 
     // do work 
     commit = true; 
    } finally { 
     if (commit) 
      conn.commit(); 
     else 
      conn.rollback(); 
    } 
} 
Смежные вопросы