答えて
を分離するための技術を提供春に関係している。大会では、DAOクラスに@Repository
、サービスにとマークすることができます。また、前者は、いくつかの永続化レイヤ例外変換を行います。
理論的に尋ねているので、DAOは未処理のデータベース操作を実行し、それらをいくつかの上位レベルの構造(オブジェクト、コレクション)に変換する必要があります。サービスはDAOを呼び出し、ビジネス操作を実行する必要があります。通常、トランザクション境界はサービスレイヤー上で複数のDAO呼び出しにまたがるように実行されます。
最後に、DAOはビジネスロジックをパーシスタンスの詳細から抽象化し、ビジネスロジック(サービス)の変更を行わずにパーシスタンスレイヤーを切り替えることが理想的です。持続性プロバイダの抽象化が漏れているため(遅延ロードなど)、これはほとんど不可能です。
DAO - データアクセスオブジェクトは、データストレージ(典型的なデータベース)への接続を処理するオブジェクトです。ここではクエリがあり、DAOはデータをサービスに提供します。
サービスにはすべてのロジックが含まれている必要があります。あなたが理論的には、あなたがそれに影響を与えないであなたのUIレイヤーまたはDAOレイヤーを変更することができます。
DAO(データアクセスオブジェクト)、データベース上の各テーブルのクラスを作成する上で構成された設計パターンであり、それは何の区別は限りがありませんオブジェクトの永続化とデータアクセスロジック
この質問は、この質問に対する回答を知りたいと思う人々(私のような人)が依然として存在することから何年も経ちましたが、上記の回答に加えて、私が見つけたものを共有したいと思います。
多くの基本的なSpringベースのコードでは、Springラーナーのために書かれたデータはデータベースからのみ読み込まれ、読み取られます。 DAOはSessionFactoryを注入します。それから、同じことをしているようなサービスがあります。そして、新しい学習者は、なぜ私たちが2つの同様のインターフェースとクラスを持っているのか疑問に思っています。
しかし、現実世界のアプリケーションでは、他のパラレルタイプのデータストレージが存在する可能性があります(たとえば、1つのソートのデータをDBに格納し、ファイルに格納された他のタイプのデータやその他のストレージタイプを与えられた時点)。
この種のケースでは、コントローラクラスは多くの異なるタイプのインターフェイス(1つはDBやその他のファイルで作業するものなど)を注入する必要があります。また、同じデータソースを使用するモバイルアプリがある場合、モバイルアプリではさまざまな種類のデータソースも設定されます。
これを行う代わりに、サービスを使用する場合、コントローラクラス、モバイルアプリケーションなどはサービスのみを使用でき、サービスは何個のデータ持続性ソースでも機能します。
データの数や種類が変更された場合、すべての変更が影響を受けるDAOやサービスで行われるため、コントローラ、モバイルアプリなどは影響を受けません。サービス。
これはすべて、実行する作業の量を著しく減少させます。
よりよい設計などの設定を推奨していファサードデザインパターンがあります。あなたは、この偉大な記事でこの偉大なグラフィック表現を見ることができます
:
https://springframework.guru/gang-of-four-design-patterns/facade-pattern/
だから、一つのデータソースとの基本的な春ベースのアプリケーションにリアルタイムで唯一のWebアプリケーションのユーザー(コントローラ)によって使用されているが、 DAOとサービスのライフシナリオの違いが明らかになります。
これが役に立ちます。
- 1. SpringサービスとDAO層をテストするJunit
- 2. J2EE Webアプリケーションのサービス層からDAOメソッドを呼び出すにはどうすればいいですか?
- 3. サービスでのSpringトランザクションとDAOレイヤー
- 4. DAOのないサービス層のテスト
- 5. smartGWT(プレゼンテーション層)をSpringサービスと統合するにはどうすればいいですか?
- 6. Spring MVCサービスDAOアーキテクチャ
- 7. 3層アーキテクチャでは、DAOパターンはどこにありますか?
- 8. サービス層のDao例外の処理
- 9. サービスがいくつかのDAOまたは他のサービスにしかアクセスできないようにするにはどうすればよいですか
- 10. Playはどうですか? ZKフレームワークとは異なるフレームワーク
- 11. Hibernate - サービス層でDAOからScrollableResultsを取得
- 12. Hibernateを使ったPlayフレームワーク - SpringのようなDAO/Service/controllerの使い方
- 13. Springフレームワークではどのようなデザインパターンが使用されていますか?
- 14. DAO、RESTサービス層を設計するには
- 15. 春のフレームワークで私たちのコントローラ、DAO、サービスを書く最良の方法はどれですか?
- 16. Spring BatchでSpringフレームワークのバージョンを上書きするにはどうすればよいですか?
- 17. のspring-saml実装では、ローカルエンティティとはどういう意味ですか?
- 18. ベストプラクティス - サービス/ DAO /ビジネス層での例外処理
- 19. spring cloud zuul:サービスhttpstatusを返すにはどうすればいいですか?
- 20. React Routerのmatch.urlとはどういうものですか?
- 21. DAO層をテストするためのDbUnitフレームワーク
- 22. DAOとSpring Autowired
- 23. 「いつも水平」とはどういう意味ですか?
- 24. DDDアプローチによるドメイン層とDAO層
- 25. struts 2フレームワークのDAOとDTO
- 26. フレームワークが「規模の拡大」とはどういう意味ですか?
- 27. Web層とサービス層の検証が重複しないようにするにはどうすればよいですか?
- 28. Spring Jdbc + Wildflyは@AutoWiredサービス層ではありません
- 29. 階層ビューアで色付きのバブルはどういう意味ですか?
- 30. は、N階層化アーキテクチャでは、サービス層とビジネス層との間の差異