Hibernateをいじる(3)

さっそく、Hibernateを使ってみましょう。
今回は、最新版のHibernate 3.0.5を使います。
http://www.hibernate.org/

1.使用するライブラリ

ダウンロードしたhibernate-3.0.5.zipを展開すると、様々なファイルが出てきます。
その中で、必要なのは、以下のとおりです。(libフォルダの_README.txtでrequiredと書いてあるものが必要になります。)

hibernate3.jar
asm.jar
asm-attrs.jar
antlr-2.7.5H3.jar
cglib-2.1.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.jar
ehcache-1.1.jar
jdbc2_0-stdext.jar
jta.jar
xml-apis.jar

2.JavaBeansを作る

5つのクラスのJavaBeansをPOJOで作ります。
Hibernate 2.0のマニュアルになりますが、日本語のものがありますので、それを参考にしていきます。
http://www.hibernate.org/hib_docs/reference/ja/html/

マニュアルによると、JavaBeansを作る上で、4つのルールが示されています。

  1. 永続フィールドに対するアクセサとミューテータを定義する
  2. デフォルト・コンストラクタを実装する
  3. 識別子プロパティを用意する(オプション)
  4. finalクラスにしない(オプション)

(1)オブジェクトIDを持つ
3番目のルールで、マニュアルには「すべての永続クラスで一貫した名前の識別子プロパティを定義することをおすすめします。 さらにnullでない(つまりプリミティブ型でない)型を使うことをおすすめします。」と書いてあります。
これに従い、すべてのクラスにoid(オブジェクトID)プロパティを持つことにします。

(2)関連はどうするか?
今回のモデルでは、Study~Subjectが1対1、それ以外は1対多の関連があります。
1対1の部分については、特に気にすることなくお互いの型のプロパティを持つことにします。(Study~Subjectに関しては、クラス図にあるように片方向関連です。StudyからSubjectへの関連のみとします。)
1対多については、多側は1つのオブジェクトを相手にするのみですから、問題ありません。残る1側は多を相手にするので、何らかのコレクションにしなければなりません。
使用できるコレクションは、後でマッピングファイルで指定できるものになります。Set、List、Map、Bagなどがあります。
Study→ReportとStudy→Examinationは、順番を必要としますからListを使用します。
Student→Studyは、最も単純なSetを使用します。

ちょっと、おさらいしておくと…。
Bag:順序なし。重複を許す。
Set:順序付き。重複を許さない。
List:順序付き。重複を許す。
Map:名前で管理するので順序なし。重複を許す。

package study.domain;

import java.util.Set;

public class Student {
	private Long oid;
	private String id;
	private String name;
	private Set studies;
 (アクセサは省略)
}

次回はマッピングファイルを作ります。

「Hibernateをいじる(4)」につづく

コメントを残す