У меня есть веб-приложение с включенным SessionScopeWebModule, и мне интересно, как лучше обрабатывать бизнес-исключения (не исключения Hibernate / DB).
Я считаю, что AR 2.0 SessionScopeWebModule неявно реализует транзакцию - если во время исключения возникаетзапрос, изменения, сделанные во время сеанса, будут отброшены / отменены.
Для моего веб-приложения бизнес-уровень будет болтлив с БД, выпуская несколько CRUD, скажем
- СоздатьСущность A
- Создать сущность B
Скажем, сущность A была создана.Однако при создании объекта B некоторые бизнес-правила не были соблюдены, и бизнес-уровень выдает бизнес-исключение.
С точки зрения пользовательского интерфейса лучше всего «обработать» бизнес-исключение и отобразить дружественное сообщение пользователю.Вот в чем проблема.Если исключение уже обработано, SessionScopeWebModule продолжает думать, что в конце запроса все в порядке, и передает объект A в базу данных без объекта B.
Каков наилучший способ обработки исключений в этом случае?Я имею в виду переменную сеанса, которая будет сбрасываться при каждом новом запросе.Если возникает исключение, переменная будет помечена как грязная.Когда запрос заканчивается, SessionScopeWebModule сначала проверит сеанс, чтобы увидеть, произошло ли какое-либо исключение.Если это так, он вызовет FailSession.
Это путь?И будет ли FailSession отменять изменения в сеансе?
Спасибо!
Боян