1

JSF と Hibernate を使用して Web プログラミングを学ぼうとしています。

私のMySQLサーバーには、名前、姓の2つの列を持つ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;
    }
}

これは 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 のような名前に変更する必要がありますか?

では、ユーザーが名前と姓を入力すると、どのメソッドを呼び出す必要があるでしょうか?

リスト 2 にあるコードは、正確にはどこに配置すればよいのでしょうか?

私の質問が明確であることを願っています。助けてくれてありがとう。

4

1 に答える 1

3

ここには、モデル - ビュー - コントローラーの基本的なパターンがあります。MyTableはあなたのモデルでindex.htmlあり、あなたの見解です。それらを結び付けるには、のようなコントローラー クラスを追加することをお勧めしRegistrationControllerます。

コントローラーは管理され、ビュー フィールドは次のようにそのプロパティを使用します。

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

コントローラーには save メソッドも含まれます。永続化の詳細をビジネスロジック(コントローラーにある必要があります)から分離するために提案したように、DAOオブジェクトを追加することもできます。

したがって、ユーザーが名前と姓の値を入力すると、これらはコントローラーのプロパティを設定します (オブジェクトに直接変換される場合がありMyTableます)。次に、保存をクリックするとsave、「DAO」を使用して「MyTable」をDBに永続化するメソッドがコントローラーで呼び出されます。

このチュートリアルも参照してください。

于 2013-05-04T19:40:17.613 に答える