В настоящее время я использую декларативное управление транзакциями в двух проектах Java, над которыми я работаю, определяя, каким методам требуется область транзакции с аннотацией @Transactional
. На мой взгляд, это хорошая комбинация гибкости и надежности: вы можете увидеть, какие методы имеют транзакционное поведение, с помощью простого текстового поиска, при необходимости откорректировать атрибуты изоляции и распространения вручную, а дополнительный объем ввода практически небрежен. .
В одном из этих проектов у меня безопасность / логирование реализовано через аспекты, и я иногда сталкиваюсь с теми же препятствиями, что и вы, когда переименовываете метод или меняете подписи. В худшем случае я потерял некоторые данные регистрации пользователей, получающих доступ к контрактам, и в одном выпуске некоторые роли пользователей не могли получить доступ ко всем функциям приложения. Ничего особенного, но что касается транзакций с базой данных, я думаю, что это просто не стоит, и мне лучше набрать @Transactional
bit самостоятельно. В любом случае, весна делает тяжелую часть.