2014-01-18 4 views
-1

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

Я прочитал о точках сохранения jdbc, где можно откат до точки, где в транзакции не было ошибок.

Но есть одна ситуация, скажем, сеть не работает, что делает соединение, обрабатывающее транзакцию, недействительным.

Теперь я смог обнаружить в своей программе всякий раз, когда возникает сетевая проблема, и появится диалоговое окно, которое будет блокировать ui в течение 2 минут при попытке установить соединение с db.

Мой вопрос в том, есть ли способ сохранить транзакцию, а не точку сохранения, или установить соединение, в котором произошел сбой сети во время транзакции, так что если соединение будет установлено, мы сможем продолжить использование запросы?

Почему я хочу это потому, что моя программа будет выполнять транзакции по нескольким модальным диалогам перед фиксацией, скажем, диалоговое окно. Запросы были успешными, когда мы переходим в диалог B до совершения, если здесь возникает сетевая ошибка, мы должны быть в состоянии продолжить где мы остановились в диалоговом окне A.

Заранее спасибо.

+0

Возможно, вам следует сохранить состояние в памяти и выполнить все обновления после последнего модального диалога –

ответ

1

Приостановка транзакции с базой данных во время «пользовательского времени» - это плохая новость. Более подходящей стратегией является использование «управления версиями».

Это делается путем добавления столбца к вашей записи, который увеличивается с каждым обновлением. Когда пользователь просматривает запись, чтобы подумать об изменениях, версия загружается. Когда изменения применяются, версия сравнивается, чтобы убедиться, что она не изменилась. Если оно изменилось, то есть «мягкий тупик», который может быть адресовано несколькими способами:

  1. предупредит пользователя, который был сделан еще одно изменение, и попросить, чтобы подтвердить перезапись
  2. Present пользователя со списком обновлений, которые произошли во время их размышления, и если они хотят перезаписать их. Это может быть сложно, потому что вы должны обновить номер версии для подтверждения, перепроверить его, если они захотят перезаписать, и дать им еще одно предупреждение/подтверждение, если что-то изменилось, когда они решили перезаписать. Ваш процесс должен быть разработан, чтобы сделать это навсегда, если это необходимо.
  3. Предотвратить обновление прямо
1

Если вашей главной задачей является обеспечение целостности данных и серверной базы данных ODBC является ACID-совместимым, то вам не нужно беспокоиться. Просто повторите транзакцию после восстановления соединения, и это будет работать нормально.

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