2010-12-08 11 views
2

私は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/

答えて

0

Boyan

私はショーンこのトピック(それの一部13)に関するウェブ-chast持っていますが、直接NHibernateはと(ActiveRecordはなし)。私は、セッションがどのように、なぜ、セッションを保存/フラッシュし、それをやり遂げるのをやめさせるのかを説明します。おそらく、そのビデオからの情報があなたを助けることができます。

グリーティング ジューユーカ