我正在尝试使用 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/