34

SpringフレームワークのDAOとサービスレイヤーとは正確には何ですか?

理論的な答えを探しています。

4

4 に答える 4

65

Springに関する限り、区別はありません。慣例により、DAOクラスをでマークし@Repository、サービスをでマークすることができます@Service。また、前者は永続層の例外変換を行います。

理論的に質問しているので、DAOは生のデータベース操作を実行し、それらをいくつかのより高いレベルの構成(オブジェクト、コレクション)に変換する必要があります。サービスはDAOを呼び出し、ビジネスオペレーションを実行する必要があります。通常、トランザクションの境界設定は、複数のDAO呼び出しにまたがるサービスレイヤーで実行されます。

最後に、DAOは永続性の詳細からビジネスロジックを抽象化する必要があります。理想的には、ビジネスロジック(サービス)を変更せずに永続性レイヤーを切り替えることができます。永続性プロバイダーの抽象化がリークしているため(遅延読み込みなど)、これはほとんど不可能です。

于 2012-04-05T09:07:32.867 に答える
18

DAO-データアクセスオブジェクトは、データストレージ(通常はデータベース)への接続を処理するためのオブジェクトです。ここにクエリがあり、DAOがサービスにデータを提供します。

サービスにはすべてのロジックが含まれている必要があります。ロジックを分離している場合は、理論的には、影響を受けることなくUIレイヤーまたはDAOレイヤーを変更できます。

于 2012-04-05T08:36:58.983 に答える
10

デカップリングのメリットがあります。データのソースが変更されても、すべてのサービスユーザー(モバイルクライアント、Webクライアント)のサービスでデータを処理する方法は変更されません。ただし、データソースからデータを抽出する方法を変更する必要があります。

ここに画像の説明を入力してください

于 2017-10-09T07:49:06.390 に答える
9

DAO(データアクセスオブジェクト)は、データベース上のテーブルごとにクラスを作成することで構成されるデザインパターンであり、オブジェクトの永続性とデータアクセスロジックを分離するための手法を提供します。

于 2012-04-05T08:48:09.267 に答える