1

新しいプロジェクトに Generic DAO と Generic Service を実装しようと考えています。私はウェブで多くの例を見てきました。

開始する前に、このデザイン パターンを使用することの長所と短所を知りたいと思います。

このパターンを使用することをお勧めしますか?

4

2 に答える 2

1

複数の DAO クラスがデータベースと通信したい場合 (CRUD(Create,Read ,Update and Delete) の例のように)、一般的な DAO 設計パターンが登場します。 (セッションを使用して)DAOクラスごとに(セッションを使用して)DAOクラスを新しく実装するたびに、データベースを処理する独自のコードを作成する必要があるため、一般的に退屈な作業です。

以下は、ジェネリック DAO を使用する場合の長所と短所です。

注:以下の詳細は、DAO パターンの使用に関する SO の質問の長所と短所への回答から学んだことです。

長所

1 . 実際のストレージ システムの優れた抽象化レイヤーを作成します。

2 . 永続化レイヤーのよりオブジェクト指向のビューを提供します。

3 . データベースからデータアクセスを実行するドメインクラスとコードを明確に分離します。 [JDBC、ORM [休止状態のような] または JPA を使用]

4 . 一般的なCRUDフローを設定したら、他の DAO に対して同じレイアウトを繰り返すことができます。

短所

1 . DAO を手書きすると、コードが面倒で反復的になり、コード ジェネレーター/テンプレートと ORM を使用する必要があります。

Q - このパターンを使用することをお勧めしますか?

A - 上記の長所と短所を観察した後、アプリケーションでジェネリック DAO を抽象化レイヤーとして使用して、CRUD の条件でデータベースと通信しました。これにより、他の DAO と同じことを行うために多くの重複コードを減らすことができました。後で Generic DAO を使用することに慣れると、生活が楽になります。

于 2015-11-19T04:46:34.497 に答える
1

DAO と汎用 DAO については、別の意見を持ったほうがよいと思います。長所に関するいくつかの言葉 (プレーンな JDBC ではなく、例として ORM、Hibernate を使用する場合、私の提案は有効です)。

  1. 実際のストレージ システムの優れた抽象化レイヤーを作成します。

それはマーケティングでたらめです。実際には、さまざまな RDBMS (Oracle RDBMS -> PostgreSQL) 間での移行に問題があります。ストレージ システムの種類の変更については言及していません (RDBMS -> NoSQL など)。

  1. 永続化レイヤーのよりオブジェクト指向のビューを提供します。

いいえ!適切に行うことは非常に困難です。ほとんどの DAO 実装には、次のような多数のメソッドがあります。

getSomething(String x, String y, String z);
getSomethingOther(String x, String z); 
  1. データベースからのデータ アクセスを実行するドメイン クラスとコードを明確に分離します。[JDBC、ORM [hibernate など] または JPA を使用]。

そうかもしれませんが、この分離の有用性は誇張されています。

  1. 一般的な CRUD フローを設定したら、他の DAO に対して同じレイアウトを繰り返すことができます。

正しいです。

于 2015-11-19T08:38:50.593 に答える