2013-05-04 37 views
1

我想學習使用JSF和Hibernate的Web編程。我應該如何爲JSF + Hibernate應用程序中的簡單CRUD操作設計類?

我有一個表,其中有2列我的MySQL服務器調用MYTABLE名字,姓氏

我也有被映射到這個表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; 
    } 
} 

這是通過休眠映射,因此該代碼(我已用於測試目的)成功地插入到數據的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之類的名稱嗎?

那麼當用戶輸入一些名字和姓時,應該調用什麼方法?

我應該在哪裏放置清單2中的代碼?

我希望我的問題很清楚,謝謝你的幫助。

回答

3

這裏有一個基本的model-view-controller模式。 MyTable是你的模型,index.html是你的看法。爲了將它們綁在一起,我建議增加一個控制器類,如RegistrationController

控制器將一個管理和視場將使用它的屬性是這樣的:

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

控制器將包含還保存方法。您也可以像您建議的那樣添加一個DAO對象,以從buisness邏輯中分離持久性細節(應該在控制器中)。

因此,當用戶輸入名字和姓氏值時,這些屬性會設置控制器上的屬性(可能會直接轉換爲您的MyTable對象)。然後點擊保存時,在控制器上調用save方法,該方法使用'DAO'將'MyTable'保存到數據庫。您可能還想看看this tutorial

+0

因此,例如,對於我的應用程序中的每個表,我是否應該有一個tableController.Java? – 2013-05-04 19:43:30

+0

並非如此 - 每個控制器都對一個明確定義的任務負責。它可以使用來自單個表格,許多表格的數據,甚至可以不使用數據。例如'RegistrationController'可能需要訪問一個包含用戶(添加新用戶)的表,權限和資源(授予他某些資源的默認權限)等等。 – dratewka 2013-05-04 19:54:37

+0

假設每個表都有DTO和DAO對象會更合理。 – dratewka 2013-05-04 19:55:31

相關問題