コマーシャルという名前のエンティティがあります。商用カテゴリのリストが保持されているCategoryエンティティがあります。カテゴリごとに、JOINED継承戦略でCommercialを拡張する個別のエンティティ(RestaurantCommercial、PhotoStudioCommercialなどの合計で最大20のエンティティなど)があります。
商業エンティティは、ある会社のコマーシャルのタイトル、テキスト連絡先番号などの一般的なプロパティを保持しますが、RestaurantCommercialおよびPhotoStudioCommercialは、そのカテゴリに関連する追加の特定のプロパティを保持します。
問題は、エンティティごとに個別のdaoとコントローラーを作成するのは少し手間がかかることです。そのため、この問題を処理するための適切な方法を探しています。
統合されたコントローラーが必要であり、フォームコントロールを処理し、Commercialを拡張するエンティティの新しいインスタンスを永続化するためのDAOである可能性があります。
これが私が考えていたおおよそのことです:
@RequestMapping(value={"/vendor/commercial/{categoryName}/new"}, method=RequestMethod.GET)
public String showNewCommercialForm(@PathVariable("categoryName") String categoryName,
Map<String, Object> map) {
Category category = categoryDAO.getCategoryByServiceName(categoryName);
Class clazz = Class.forName(category.getClassName()); //here className is smth like domain.commercial.RestaurantCommercial
map.put("commercialInstance", clazz.newInstance());
//separate view for each category of commercial
return "vendor/commercial/"+categoryName+"/new";
}
そして、このようなもののために別のバインダーを書かなければならないとしても、フォームデータを保存するための同様のコントローラーを考えていました。
したがって、質問は次のとおりです。この問題を処理するために何を提案しますか、またはすでに同様のニーズ(ジェネリック、リフレクション、またはその他)に直面している場合のベストプラクティスは何ですか?またはそれが価値があるかどうか、そしてその理由は?前もって感謝します。