Как выполнять простые транзакции Spring JDBC вне контейнера IoC?

StackOverflow https://stackoverflow.com/questions/557667

Вопрос

Проект, над которым я работаю, использует прямой доступ к данным JDBC во всей его шаблонной красе и не использует никаких транзакций.Я чувствую, что использование транзакций и упрощение способа написания методов доступа к данным важно, особенно с учетом того, что в настоящее время вносятся некоторые изменения.Проект существует уже довольно давно и не подходит для фреймворка ORM.Он также использует много одиночек (тьфу), и распутать его, чтобы сделать его способным использовать внедрение зависимостей, было бы изрядным объемом работы, и я не думаю, что смог бы убедить кого-либо, что мы должны сделать это сейчас.

Мне нравится интерфейс Spring JDBC, в частности, благодаря его SimpleJdbcTemplate.Мой вопрос заключается в том, как включить некоторые простые транзакции (для каждого запроса сервлета) для этого, без необходимости устанавливать что-либо программно в каждом методе доступа к данным или с использованием контейнера Spring IoC или AOP.Я поиграл со своей собственной архитектурой, которая в итоге получила интерфейс, похожий на SimpleJdbcTemplate's и может использовать один запрос-локальное соединение и транзакцию, когда вызовы к нему выполняются в контексте запроса (через ServletRequestListener с помощью ThreadLocal).Кажется, это работает хорошо, но я думаю, что использование хорошей внешней библиотеки, такой как Spring JDBC, было бы предпочтительнее.

У кого-нибудь есть какой-нибудь опыт в этом?

Это было полезно?

Решение

Другие советы

Spring обрабатывает транзакции для вас декларативно, не беспокоясь о написании классов AOP.Если вы используете JDK 5 или выше и Spring 2.5, у вас это будет еще лучше с аннотации.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top