2009-11-01 2 views
3

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

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

ответ

1

Используя Ибатис и сохранив прозы довольно счастливо, я не вижу ничего неблагоприятного в этом подходе.

Ibatis отлично подходит для удобного прохождения параметров в ваших обработках изменения данных и для правильной обработки результатов обработки данных proc-data.

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

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

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

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

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

1

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

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

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

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