Spring MVC と Hibernate を使用する CRM プロジェクトに取り組んでいますが、Hibernate 基準を使用するのに最適な場所がわかりません。プレゼンテーション層に検索機能があり、ユーザーはさまざまな方法でさまざまなパラメーターに基づいて検索できるため、休止状態の基準を使用したいと考えています。ID だけが必要な場合もあれば、プロパティのサブセットが必要な場合もあれば、複数のテーブルを結合する必要がある場合もあります。そのため、プレゼンテーションからパラメーター、順序、必須パラメーター、検索制限のリストを渡す代わりに、hibernate の基準のような構造化された基準を構築します。層からデータ層へ、コードをクリーンアップできます。ただし、MVC アーキテクチャに反するため、プレゼンテーション層で休止状態を使用するのは正しくありません。そして、休止状態の基準を複製することが正しいアプローチだとは本当に思いません。私は3つのアプローチを考えることができました:
検索リクエストの種類ごとに 1 つずつ、ビジネス レイヤーで多数のメソッドを作成し、状況に応じてプレゼンテーション レイヤーからこれらの各関数を呼び出します。これらの各メソッドは基本的に、SQL クエリ (または条件オブジェクト) を作成してデータベースからデータを取得する対応する DAO メソッドにパラメーターを渡す以外は何もしません。このアプローチでは、パラメーターを DAO に渡す以外に何もしない何百ものメソッドになってしまいます。
プレゼンテーション (またはビジネス層) で Hibernate の Criteria クラスに似たクラスを作成します。次に、プレゼンテーション層の検索パラメーターを使用してこのオブジェクトを開始し、DAO に渡します。次に、DAO は、このオブジェクトに基づいて休止状態の基準オブジェクトを作成します。このアプローチには、休止状態の基準クラスの複製が含まれます。
プレゼンテーション層で Hibernate の Criteria クラスを開始し、それを DAO に渡して検索結果を取得します。
どちらが最善のアプローチか教えてください。
ありがとう