これはかなり理論的な質問です。
私のサービスクラスでは、何らかの理由で操作が実行できない場合、原因が誤った入力または予期されチェックされたその他の条件であっても、常にロールバックを行う傾向があります。
Open Session in View パターン (OSIV) を使用する Web アプリケーションでは、セッションが閉じられ、後続の遅延読み込み操作が失敗するという厄介な副作用があります。リクエスト中のある時点でエラーが発生した場合にのみ、リクエストの最後にセッションをロールバックするために、醜い配管コードを作成する必要があります。
これは私に考えさせました:何かが本当にうまくいかなかった場合、ロールバックは例外的な手段であるべきですか?条件が満たされない場合、サービスメソッドはデータが書き込まれたり変更されたりしないことを自分で確認する必要がありますか? 入力の検証が成功したが、サービス メソッドが選択された入力が不正であると判断したときに、フロントエンド レイヤーがモデル オブジェクト (フォームなど) を更新する場合の対処方法は? たとえば、Hibernate は、ロールバックが行われない場合、デフォルト設定でこれらの変更を自動的に保持します。
ご意見、アドバイスお待ちしております!