我有一个名为 Commercial 的实体。我有一个类别实体,其中包含商业类别列表。对于每个类别,都有一个单独的实体扩展 Commercial(如 RestaurantCommercial、PhotoStudioCommercial 等,总共多达 20 个实体),具有 JOINED 继承策略。
商业实体持有一些公司商业广告的标题、文本联系人号码等一般属性,而 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";
}
而且我正在考虑使用类似的控制器来保存表单数据,即使我必须为这些东西编写一个单独的活页夹。
所以问题是:如果您已经面临类似的需求(泛型、反射或其他),您会建议如何处理这个问题,或者最佳实践是什么?或者这是否值得,为什么?提前致谢。