hibernate1(begin)


参考資料はhibernate 3に由来する.3.2 reference
1.エンティティークラスの認識
次はJavaBeanですがhibernateはまだ知りません
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;
    }

}

このクラスは標準的なJavaBean規則に従い、プライベートなfieldを使用して、対応するgetとsetメソッドを追加します.
 
idプロパティは、特定のeventを識別するために使用され、すべての永続化クラスには識別プロパティが必要です.永続化クラスには、hibernateが反射メカニズムによってオブジェクトを作成するパラメトリックなしコンストラクタが必要です.
 
2.hiberanteマッピングファイル(xxx.hbm.xml)
EVENTクラスに対応するhibernateマッピングファイルは、hibernateがEVENTクラスのオブジェクトを操作するときにデータベース内のどのテーブルを操作するかを示します.
   
//nativeは、sqlserverが自己増加できるように、データベースが本来持っている能力に基づいてプライマリ・キーを生成することを示す.
ここでnativeはidentityに相当し、mysqlではsequenceでプライマリ・キーを生成することができ、nativeはsequence
に対応する
                  

 
classプロパティhibernate,Eventクラス対応データベースのEVENTSテーブルに伝える
 
ここでのidプロパティは、データベース内のプライマリ・キーを識別するために使用されます.name=id JavaBeanのidプロパティがhibernateをプライマリキーとしてアクセスするために使用されていることを示し、coloumn=EVENT_IDは、データベース内のテーブルのプライマリ・キー列名がEVENT_であることを示すID.
generatorは、プライマリ・キーの生成ポリシーを記述するために使用されます.
 
propertyは、EVENTクラスの他のプロパティを表すために使用されます.nameはEVENTクラスのプロパティの名前を表し、typeはhibernateマッピングタイプを表し、javaとsqlタイプの間で変換できます.columnは、この属性に対応するデータベース内のテーブルの名前を表します.
次のtitleはnameのみで、typeとcolumnがない場合、hibernateは自動的に反射メカニズムによってEVENTクラスのtitleのタイプを取得し、columnの場合、hibernateはデフォルトテーブルの名前とクラスの名前を一致させる対応する値を与えます.
 
3.hibernateプロファイル(xxx.cfg.xml)
hibernateマッピングファイルがあれば、hibernateはオブジェクトの操作を通じてデータベーステーブルを操作することができますが、hibernateはどのデータベースを操作するか、マッピングファイルがどこに置かれているかをどのように知っていますか.
ここでhibernateプロファイルを引き出します.2つの形式があります.hibernate.cfg.xmlまたはhibernate.propertiesは、一般的にxmlを主とし、
new Configuration()を使うとconfigue()プロファイルをロードする場合、hibernateがデフォルトでロードされます.cfg.xml、hibernateプロファイルの名前がxxxの場合.cfg.xmlではconfigue()メソッドにパラメータ、すなわちnew Configuration()を追加する必要があります.configue("xxx.cfg.xml").
 
次に、プロファイルの例を示します.

session-factoryはデータベースに対応し、ここでデータベース関連情報を構成し、hibernateマッピングファイル情報はここで構成する必要があります(マッピングファイルの位置を示す).このようにしてこそ、hibernateはどのエンティティクラスがどのテーブルに対応しているかを知ることができます.                    org.hsqldb.jdbcDriverデータベースドライバjdbc:hsqldb:hsql://localhostデータベースに接続するurlsaユーザー名パスワードtrueを表示するかどうか
マッピングファイルの場所は、位置が間違っているとエラーが発生します.