Java 实体POJO';在Struts 2中作为动作类

Java 实体POJO';在Struts 2中作为动作类,java,hibernate,jpa,struts2,pojo,Java,Hibernate,Jpa,Struts2,Pojo,我在一个项目中有大约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&quo

我在一个项目中有大约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
,都需要一个视图模型。您可以对其使用action类,或将模型聚合到action,类似于
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";
  }
}

在Struts 2中,不能将实体POJO用作
Action
类。因为它们是由Hibernate管理的,但是
Action
对象是由Struts 2管理的,并且它们有不同的生命周期。

不要使用模型驱动接口。您可以将实体放入action类中<代码>类操作{EntityOne EntityOne;EntityTwo EntityTwo;}。不要把动作和模型混为一谈。比如说,如果我必须获取表单数据,我从中学到我只有两个选项中的一个:1)再次使用另一个类中的所有数据成员并将其映射到实体类的成员,或者2)使用我不愿意使用的模型驱动接口,或者,3)我的方法是这样做的,但我没有看到任何遵循我的方法的教程您的第一个选项比其他选项更好,但您不必将实体类的所有成员映射到操作。请参阅我的第一条评论中的一小段代码。