Управление транзакциями базы данных вручную в среде Spring / Hibernate - PullRequest
7 голосов
/ 22 февраля 2011

У нас есть веб-приложение на основе Spring, которое использует Hibernate для загрузки / сохранения своих сущностей в базовой базе данных.

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

  1. Вызовите метод StartTransaction и взамен получите идентификатор, на который они могут ссылаться
  2. Выполнять все соответствующие вызовы БД (например, создавать, изменять, удалять), обращаясь к этому идентификатору, чтобы выяснить, какие операции принадлежат запущенной транзакции
  3. Вызовите метод CommitTransaction, чтобы сообщить нашему бэкэнду, что транзакция может быть совершена сейчас (или в отрицательном случае будет вызван RollbackTransaction)

Имея в виду, что вся обработка базы данных будет выполняться внутренне с помощью аннотаций постоянства Java, как мы можем открыть управление транзакциями для нашего пользовательского интерфейса, который ведет себя как стороннее приложение, которое не имеет прямого доступа к внутренним объектам, но имеет дело только с объектами передачи данных?

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011
0 голосов
/ 22 февраля 2011

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

JTA + Stateful сессионные компоненты могут быть тем, что вы хотели бы иметьпосмотри.

0 голосов
/ 22 февраля 2011

Почему бы вам не создать сервисы вокруг вашего «конечного приложения», например, SOAP-интерфейс или REST-интерфейс.

С помощью этой стратегии вы можете управлять своей транзакцией в бэкэнде

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