私はサービスについて少し混乱しています。休止状態の統合にサービスを使用する必要があるのはなぜですか? 私はDAOインターフェースを直接使用できると思います。たとえば、このチュートリアルhttp://www.onlinetechvision.com/?p=566で、彼が IUserDAO の代わりに IUserService を使用した理由。IUserService は本当に必要ですか?
2 に答える
サービスはいくつかの点で優れています。
トランザクション内で DAO 操作を調整するため、アクションのロジックで複数の SQL 呼び出しが必要な場合は、それらをまとめてコミットまたはロールバックできます。
プレゼンテーションに依存しないビジネス ロジックを配置する場所を提供します。controllers とは対照的に、 services に何が入るかについて話している関連する回答があります。
アプリケーションがサポートする低レベルのユース ケース アクションを明確に公開します。つまり、サービスのメソッドを見ることで、ユーザーがアプリケーションで実行できることを知ることができます。
サービスが過剰だと感じた場合 (たとえば、ビジネス ロジックがなく、トランザクションで複数のデータ アクセス操作を組み合わせる必要のない CRUD アプリケーションを構築している場合)、それらを使用する必要はありません。DAO にトランザクションの注釈を付けることができます。
(私はJSFに精通していないことに注意してください(質問にリンクされているチュートリアルで使用されています)、この質問にJSF固有の角度がある場合、私はそれに対処できません。)
CRUD アプリケーションを構築している場合は、Grails などを調べてください。DAO のコーディングを回避できるデータ アクセス メソッドを含む、すぐに使用できるすべてのアプリケーション構成を提供します。また、サービスなしで開始し、必要に応じてサービスを追加することもできます。
実際の実装ではなく、インターフェイスを注入します (Spring は正しいものを注入します)。したがって、後で必要に応じて、必要に応じて実装を変更できます。これは簡単な説明ですが、すぐにもっと複雑な説明が続くと思います。