私はSessionScopeWebModuleを有効にしたWebアプリケーションを持っていますが、 がビジネス例外(Hibernate/DB例外ではありません)を最もうまく処理する方法を知りました。Castle ActiveRecord SessionScopeWebModule例外処理
私はAR 2.0 SessionScopeWebModuleが暗黙的に トランザクションを実装していると信じています。要求中に例外が発生した場合、セッション中に行われた の変更は破棄またはロールバックされます。私のWebアプリケーション、ビジネス層は、DBとのおしゃべりも いくつかのCRUDsを発行しますについては
は、エンティティAを作成し- 言う
セイエンティティAが持つエンティティBを作成します。作成されました。ただし、エンティティBを作成するときには、 ビジネスルールが確認されず、ビジネスレイヤで ビジネス例外がスローされます。
UIの観点からは、ビジネス例外 を「処理」し、フレンドリーなメッセージをユーザーに表示することをお勧めします。これは 問題の原因です。例外がすでに処理される場合、 SessionScopeWebModuleはすべてを考えに沿って行く要求の 最後で結構ですし、データベースにエンティティAをコミットし、 実体のないB.
この場合、例外を処理するためのベストプラクティスは何ですか?私はそれぞれ 要求のためにリセットされるセッション変数を考えています。例外が発生した場合、変数はdirtyとマークされます。 リクエストが終了すると、SessionScopeWebModuleはまず、 セッションをチェックして、例外が発生したかどうかを確認します。その場合は、 FailSessionが呼び出されます。
これは方法ですか?そして、FailSessionは、セッションに変更した の変更を破棄する仕事をしますか?
ありがとうございます!ウェブサイト上のhttp://www.summerofnhibernate.com/