Spring, iBatis, MySQL - как управлять транзакциями? - PullRequest
3 голосов
/ 01 ноября 2009

Здравствуйте, я создаю веб-приложение с использованием Spring ibatis и MySQL.

Я собираюсь использовать хранимые процедуры mysql и буду вызывать их с помощью ibatis. Мой вопрос о том, как управлять транзакциями. Должен ли я управлять транзакциями внутри хранимых процедур или с помощью spring / ibatis или с обоими?

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Я очень рад, что использовал Ibatis и хранил проки, и не вижу в этом ничего плохого.

Ibatis отлично подходит для удобной передачи параметров в ваши процессы изменений и для правильной обработки наборов результатов операций получения данных.

Ibatis также может обрабатывать выходные данные нескольких результирующих наборов, если ваши прокы решат это сделать.

На стороне сделки: это зависит. Если ваше приложение может работать довольно успешно в режиме автоматической фиксации, но у вас есть несколько отдельных процедур, требующих транзакций, тогда proc-managed может работать для вас. Вы можете спроектировать свое приложение так, чтобы все, что требует транзакций, было организовано одним «родительским» процессом. Не говоря уж о том, что это особенно замечательная модель, но она, вероятно, сработает в разумных пределах.

Если это не подходит, то транзакции, управляемые Spring, безусловно, являются хорошим выбором для реализации с первого дня, и этот подход, скорее всего, будет расти вместе с вашим приложением.

Заключительная мысль - помните о вложенности транзакций, т. Е. Если у вас есть управление транзакциями app / Spring, независимо от того, какую обработку транзакций вы помещаете в procs, до тех пор, пока вы со стороны COMMIT не выполните COMMIT, эти "внутренние" фиксации не выполняются должным образом "совершено (они могут быть использованы, но это больше, чем я намереваюсь здесь углубиться).

Редактировать - с момента написания этой статьи я узнал, что разные БД по-разному обрабатывают вложение COMMIT. Похоже, что Oracle, в частности, рассматривает COMMIT как COMMIT независимо от вложенности, поэтому процессы, которые фиксируют транзакцию, управляемую другим приложением, действительно фиксируются правильно.

1 голос
/ 01 ноября 2009

Я не знаю, почему вы используете хранимые процедуры. Так как вы, я не знаю, что iBatis покупает вас.

Если бы я писал это приложение, я бы использовал Spring и iBatis или Spring и хранимые процедуры, но не оба.

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

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