2

Spring を使用して HTTP リクエスト パラメータをビジネス ドメイン オブジェクトに自動的にマップするコントローラがあります。ドメイン オブジェクトのフィールド データをデータベースに永続化します。

ドメイン オブジェクトに関連するフィールドの任意の組み合わせでの検索をサポートする必要がある別のコントローラーがあります。一部のフィールド (日付フィールドなど) では、範囲内での検索を許可する必要があります。したがって、日付フィールドが 1 つしかないため、ドメイン オブジェクトを再利用することはできません。

たとえば、日付フィールドを持つレポート ドメイン オブジェクトがあります。ただし、検索には「開始」レポート日付フィールドと「終了」レポート日付フィールドが必要です。

ビジネス ドメイン オブジェクト (範囲検索をサポートするフィールドを除く) をほとんどミラーリングする検索専用のドメイン オブジェクトのセットを作成する必要がありますか? または、これを行うためのより良い方法はありますか?

よろしくお願いします。

4

2 に答える 2

0

新しいオブジェクトを作成する代わりに、範囲の既存のドメイン オブジェクトに 2 つのフィールドを追加するのはどうですか? 2 つの新しいフィールドをReport ドメイン オブジェクトに
追加するのと同じです。fromReportDatetoReportDate

于 2012-10-03T06:25:19.127 に答える
0

代わりにCriteriaのようなオブジェクトを導入することを検討していただけますか?

あなたが現在持っているものに基づいて、これ以上のビジネス オブジェクトを作成することはありません。単純に、それらのエンティティをモデル化していないためです。それらを見つけるために使用する検索条件をモデル化しているからです。

たとえば、次のようにします。

CriteriaBuilder<Report> builder = new CriteriaBuilder<Report>();
builder.addFrom("date", new Date())
builder.addTo("date", new Date());
Criteria<Report> criteria = builder.build();

クラスのCriteriaBuilderプロパティを反射的にチェックして、存在しないフィールドに対して基準をバインドしようとしていないことを確認できます。

于 2012-10-03T08:20:55.723 に答える