2016-10-09 2 views
1

Скажите, что соединение открыто, а для автоматической фиксации установлено значение false, чтобы начать транзакцию. После завершения транзакции я хотел бы отменить любые изменения, чтобы довести базу данных до состояния, которое было до начала транзакции.JDBC RollBack After Connection Закрыть

Моя проблема в том, что во время транзакции соединение закрыто, и, таким образом, все изменения совершены в это время.

Есть ли способ отбросить состояние базы данных до начала первоначальной транзакции?

и да, я пробовал пользоваться точками сохранения безрезультатно.

+0

Вы используете Oracle? AFAIK, это один из немногих драйверов, который совершает, а не откатывается назад на соединение. –

ответ

0

Это действительно зависит от того, что вы делаете, почему и как.

  • Если у вас есть ссылка на транзакцию, вы можете откатиться самостоятельно.
  • Если нет, можете ли вы сделать исключение в конце?
  • Если все, что вы хотите, это проверить вещи, почему бы не использовать встроенную базу данных, например H2, и начинать с нуля каждый раз?
  • Если H2 не разрезает его, проверьте testcontainers.
+0

К сожалению, я как бы застрял в этом тестировании, используя только библиотеку JDBC. У меня есть мои тесты, и перед ними я начинаю транзакцию и после откат. Код, который я тестирую, настроен для закрытия соединения после каждой вставки, обновления и т. Д. ... – hrazzer