1.2.1. 最初のクラス

1.2.1. 最初のクラス

最初の永続クラスは、プロパティをいくつか持つシンプルな JavaBean です:

package events;

import java.util.Date;

public class Event {
    private Long id;

    private String title;
    private Date date;

    public Event() {}

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

ご覧のとおり、このクラスはフィールドが private の可視性を持っているのと同時に、 JavaBean 標準のゲッター、セッターメソッドの命名規約に従っています。このような設計は推奨されていますが必須ではありません。アクセサメソッドを設けるのはリファクタリングを考えた頑健性のためで、 Hibernate はフィールドに直接アクセスすることも可能です。引数のないコンストラクタは、リフレクションでこのクラスのインスタンスを作成するために必要です。

id プロパティは、ある特定のイベントに対するユニークな識別子の値を保持します。 Hibernate の完全な機能を使いたければ、すべての永続エンティティクラス (それほど重要ではない依存クラスというものもあります) にこのような識別子プロパティが必要になります。事実上ほとんどのアプリケーション ( 特に web アプリケーション) では、識別子でオブジェクトを区別する必要があるため、これは制限というよりも特徴であると考えるべきです。しかし通常オブジェクトの ID を操作するようなことはしません。そのためセッターメソッドは private にするべきです。 Hibernate だけがオブジェクトがセーブされたときに識別子へ値を代入します。 Hibernate が(public, private, protected)フィールドに直接アクセスできるのと同様に、 public, private, protected のアクセサメソッドにアクセスできるということがわかるでしょう。選択はあなたに任されているので、あなたのアプリケーションの設計に合わせることができます。

引数のないコンストラクタはすべての永続クラスに必須です。これは Hibernate が Java のリフレクションを使って、オブジェクトを作成しなければならないためです。コンストラクタを private にすることは可能ですが、実行時のプロキシ生成と、バイトコード操作なしの効率的なデータの抽出には、 package 可視性が必要です。

開発フォルダの src というディレクトリの適切なパッケージに、この Java ソースファイルを配置してください。この時点でディレクトリは以下のようになっているはずです:

.
+lib
  <Hibernate and third-party libraries>
+src
  +events
    Event.java

次のステップでは、 Hibernate にこの永続クラスの情報を教えます。