我的项目中有大约 12 个表,我希望使用 Hibernate 来实现数据库目的。
是否必须使用
ModelDriven
接口将每个 POJO 映射到一个类(总共 12 个类)?
我不能只使用 POJO 类本身来映射表单中的每个字段吗?
例如:
public class Xyz{
@Id
private int sno;
private String xyz;
//getters setters
public String execute(){
// Hibernate code
return "success";
}}
这是令人不悦的事情,而不是标准的编码实践吗?如果是这样,为什么?
视图层上使用的模型并不总是您的业务模型,但它应该反映生成输出所需的数据。
无论您是否使用
ModelDriven
,您都需要一个视图模型。您可以为其使用操作类或将模型聚合到操作中,类似于ModelDriven
但不实现此接口,因此放弃modelDriven
拦截器。
例如您的班级可以更改为
public class XyzAction extends ActionSupport {
private Xyz model = new Xyz();
public Xyz getModel(){ return model;}
public String execute(){
// Hibernate code
Xyz xyz = session.get(Xyz.class, id);
//populate the model
model.setSno(xyz.getSno());
model.setXyz(xyz.getXyz());
return "success";
}
}
您不能将实体 POJO 用作 Struts 2 中的
Action
类。因为它们由 Hibernate 管理,但 Action
对象由 Struts 2 管理,并且它们具有不同的生命周期。