java - 我应该如何为 JSF + Hibernate 应用程序中的简单 CRUD 操作设计类?

标签 java hibernate jsf model-view-controller

我正在尝试使用 JSF 和 Hibernate 学习 Web 编程。

我的 MySQL 服务器中有一个名为 mytable 的表,它有 2 列:name, surname

我还有一个映射到这个表的 MyTable.java,它看起来像这样:

// Listing 1
public class MyTable {

    private String name;
    private String surname;

    public MyTable() {
    }

    public String getName() {

        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }
}

这是通过 Hibernate 映射的,因此这段代码(我已将其用于测试目的)成功地将数据插入到 mytable:

    //Listing 2
    Session session = HibernateUtil.getSessionFactory().openSession();

    session.beginTransaction();

    MyTable myTable = new MyTable();

    myTable.setName("Name");
    myTable.setSurname("Surname");

    session.save(myTable);

    session.getTransaction().commit();

这就是我在 index.xhtml 上的表单的样子:

// Listing 3
<h:form id="registirationForm" prependId="false">

    <h:outputLabel for="name">Name:</h:outputLabel>
    <h:inputText id="name"></h:inputText>

    <h:outputLabel for="surname">Surname:</h:outputLabel>
    <h:inputText id="surname"></h:inputText>

</h:form>

我的问题是:

如何将我的表单与上面的代码关联起来?

  • 我是否应该将 MyTable 类设为托管 bean,并放置一个名为 saveRecord 的方法并将上面的代码放在那里?
  • 是否应该映射到其他类?如果是这样,它应该叫什么?我应该将当前 MyTable.java 的名称更改为类似 MyTableDao.Java 的名称吗?

那么当用户输入一些名字和姓氏时,应该调用什么方法呢?

我应该把 list 2 中的代码放在哪里?

我希望我的问题很清楚,感谢您的帮助。

最佳答案

你有一个基本的 model-view-controller模式在这里。 MyTable 是您的模型,index.html 是您的 View 。为了将它们联系在一起,我建议添加一个 Controller 类,例如 RegistrationController

Controller 将是托管的, View 字段将使用它的属性,如下所示:

<h:outputLabel for="name">Name:</h:outputLabel>
<h:inputText id="name" value="#{registrationController.userName}"></h:inputText>

Controller 还将包含保存方法。您还可以像您建议的那样添加一个 DAO 对象,以将持久性细节与业务逻辑(应该在 Controller 中)分开。

因此,当用户输入名字和姓氏值时,这些设置 Controller 上的属性(可能会直接转换为您的 MyTable 对象)。然后,当单击保存时,将在 Controller 上调用一个 save 方法,该方法使用“DAO”将“MyTable”保存到数据库。

您可能还想查看 this tutorial .

关于java - 我应该如何为 JSF + Hibernate 应用程序中的简单 CRUD 操作设计类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378075/

相关文章:

java - 来自外部 jar 的 seam i18n 属性文件

jsf - 有没有办法让 Primefaces 中的图形图像仅按需执行 "value"方法?

java - 使用 Java(不是命令行)启动时覆盖 JMeter 的默认日志位置

java - MAVEN:如何传递 -D 系统变量进行测试

java - 在 intellij 中为 hibernate 使用构建 gradle

java - Hibernate 一对一单向 - id 未分配

java - 如何在java中为键值对创建JSON数组并在JQuery自动完成中使用它来分离键值

java - 如何在 Spring 5 Controller 中以声明方式使用 JWT 授权?

java - 如何获取Hibernate插入和删除的行数

jsf - 目标无法到达,标识符解析为空