2012-01-21 6 views
1

私は2年以来、playframeworkを使用してきました。フレームワークには "JPA in streads"機能があります。私はとても大好きでした。ModelをGenericDAOとして使用する

http://www.playframework.org/documentation/1.2.4/5things

これはサンプルコードです:

User connectedUser = User.find("byEmail", connected()).first(); 
... 
connectedUser.delete(); 
... 
connectedUser.save(); 

このaproachは、ヘルパーメソッドの多くを使用しています。そのうちのいくつかは静的メソッドです。 すべてのモデルファイルはモデルクラスとボイラーを拡張します。検索、保存、削除、フェッチを使用することができます。

現在、私はSpring MVC 3.1を使用しています。 MVCの使い方が気に入っています。 しかし、接続システムは少し複雑です。

私は多くの記事を読んでいます。サービス層、DAO層、モデル層を使用するものもあります。 それらのうちのいくつかは、ダオ層とモデル層のみを使用します。 各モデルオブジェクト、サービスクラス、およびサービスインターフェイスごとに、DAOインターフェイスとDAOクラスが作成されています。 そしてそれらのいくつかは汎用DAOクラスを使用します。

実際、私はこのすべての変形について少し混乱しています。

  • なぜ私たちはDAOレイヤーを使用していますか?単一のhibernateUtilクラスと名前付き クエリは、CRUD操作では不十分です。
  • プレイフレームワークのアプローチを使用しないのはなぜですか?
  • なぜすべてのDAOクラスにインターフェイスを使用しますか?実装だけでは不十分ですか?
  • なぜ不要なサービスレイヤーを使用するのですか?

答えて

4

DAOレイヤは、データアクセスコードをビジネスロジックコードから分離するのに便利です。これは、DAOを嘲笑することができるので、ビジネスロジックの単体テストを開始するときに特に便利です。すべてのアプリケーションは単にCRUD操作を行うだけではありません。

インターフェイスには同じテスト容易性の利点があります。 what reasons are there to use interfaces (Java EE or Spring and JPA)を読んでください。ここでは、インターフェイスを持つ利点について説明します。

サービスレイヤは最も重要なレイヤです。これは、トランザクションを区別するために使用されるものです。 DAOレイヤの使用を避けることができます。特に、非常に簡単なデータアクセスが可能です。しかし、サービス層は非常に重要です。独自のトランザクションで3つの挿入と1つの更新が必要なわけではありません。サービスレイヤがなぜ重要であるかを説明する質問は、DAO Design Pattern and Servletsを参照してください。

関連する問題