Управление транзакциями с помощью Spring, Hibernate и mySQL, дополнительные вопросы (использование hibernate без транзакций ..) - PullRequest
0 голосов
/ 14 апреля 2011

Я работаю над разработкой веб-приложения с использованием Spring Framework 3.0.5 и Hibernate Framework 3.6, и у меня возникли некоторые вопросы. Я использую Управление транзакциями с аннотациями. (@Transactional) и мой DAO написан на обычном Hibernate 3 API.

1) Как я могу заметить, что транзакция откатывается? (Я имею в виду, я должен ловить исключения? Или, может быть, после проверки, все ли работает? Окружающие @ транзакционные методы с try-catch не кажутся мне хорошей вещью)

2) Правильно ли, что управление транзакциями с помощью @transactional не работает (не выполняется откат), когда я ловлю исключение? (когда я окружаю вызов транзакционного метода try-catch)

3) Можно ли использовать Hibernate БЕЗ использования транзакций? чтобы я мог использовать Spring с Hibernate, но без управления транзакциями?

4) Если невозможно использовать Hibernate без использования транзакций, это означает, что моя система управления базами данных всегда должна поддерживать транзакционные механизмы (например, InnoDB). Я не могу использовать таблицу myISAM вместе с Hibernate тогда? Это было бы большим недостатком спящего режима тогда!?

спасибо: -)

1 Ответ

3 голосов
/ 14 апреля 2011
  1. Spring автоматически откатит транзакцию, если из метода, аннотированного @Transactional, возникнет исключение во время выполнения.Обычно вам все равно, откатится он или нет, потому что исключение будет распространяться до стека вызовов.Если вам действительно нужно знать, откатывается ли транзакция, используйте TransactionAspectSupport.currentTransactionStatus().isRollbackOnly().

  2. Нет.Если вы поймете исключение времени выполнения, сгенерированное из транзакционного метода, транзакция, использованная для запуска этого метода, будет откатана.

  3. Нет.Вам нужны транзакции, чтобы использовать Hibernate, и это хорошо.Работа с базой данных без транзакций - это рецепт бедствий.

  4. Да, вам нужен транзакционный механизм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...