Я очень рад, что использовал Ibatis и хранил проки, и не вижу в этом ничего плохого.
Ibatis отлично подходит для удобной передачи параметров в ваши процессы изменений и для правильной обработки наборов результатов операций получения данных.
Ibatis также может обрабатывать выходные данные нескольких результирующих наборов, если ваши прокы решат это сделать.
На стороне сделки: это зависит. Если ваше приложение может работать довольно успешно в режиме автоматической фиксации, но у вас есть несколько отдельных процедур, требующих транзакций, тогда proc-managed может работать для вас. Вы можете спроектировать свое приложение так, чтобы все, что требует транзакций, было организовано одним «родительским» процессом. Не говоря уж о том, что это особенно замечательная модель, но она, вероятно, сработает в разумных пределах.
Если это не подходит, то транзакции, управляемые Spring, безусловно, являются хорошим выбором для реализации с первого дня, и этот подход, скорее всего, будет расти вместе с вашим приложением.
Заключительная мысль - помните о вложенности транзакций, т. Е. Если у вас есть управление транзакциями app / Spring, независимо от того, какую обработку транзакций вы помещаете в procs, до тех пор, пока вы со стороны COMMIT не выполните COMMIT, эти "внутренние" фиксации не выполняются должным образом "совершено (они могут быть использованы, но это больше, чем я намереваюсь здесь углубиться).
Редактировать - с момента написания этой статьи я узнал, что разные БД по-разному обрабатывают вложение COMMIT. Похоже, что Oracle, в частности, рассматривает COMMIT как COMMIT независимо от вложенности, поэтому процессы, которые фиксируют транзакцию, управляемую другим приложением, действительно фиксируются правильно.