6.マッピングファイルの記述
2005.10.24 株式会社四次元データ 瀧下 浩
Hibernate 6章 マッピングファイルの記述
- 6.1. DTD を見てみよう
- 6.2. class 要素
- 6.3. id 要素
- 6.4. generator 要素
- 6.5. property 要素
- 6.6. many-to-one 要素
- 6.7. one-to-one 要素
POJO と テーブルは 1対1 に対応しているわけではなく、POJO を生成するために 複数のテーブルからデータを集めて来る必要がある場合もあります。この章では、 マッピングファイルについて簡単に説明していきます。
6.1 DTD を見てみよう
XMLの設定ファイルの書き方について分からないことがあれば、まずはDTDを見てみることを お勧めします。Hibernate のマッピングファイルは、サンプルのマッピングファイルに記述 してあるとおりの URLに置かれています。 本章では、重要と思われる以下の要素について紹介していくことにします。
- class 要素
- id 要素
- generator 要素
- property 要素
- many-to-one 要素
- one-to-one 要素
6.2 class 要素
Book.hbm.xml の class 要素を見てみましょう。
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.techscore.hibernate.chapter1.Book" table="BOOK">
<id name="isbn" type="string" unsaved-value="null" >
<column name="ISBN" sql-type="char(17)" not-null="true"/>
<generator class="assigned"/>
</id>
<property name="name" />
<property name="price" />
</class>
<query name="priceLessThan">
<![CDATA[
from com.techscore.hibernate.chapter1.Book as book
where book.price < :price
]]>
</query>
</hibernate-mapping>
class 要素は、ひとつのマッピングファイルに複数記述することができ、 どの Java クラスと主にどのテーブルを関連付けるかを記述するものです。 class 要素で指定すべき主な属性は以下の通りです。
属性名 | 必須 | 説明 |
---|---|---|
name | optional | 永続化クラス(もしくはインタフェース)の完全限定名。 省略されると POJO
に対するマッピングではないと解釈される。 ex.) com.techscore.hibernate.chapter1.Book |
table | optional | データベースのテーブルの名前 ex.) BOOK |
6.3 id 要素
永続化されるほとんどのクラスは、インスタンスの一意な識別子を保持するプロパティーを持ちます。 このような一意な識別子はデータベースのテーブルの主キーカラムである必要があります。 <id> 要素は、識別子となるプロパティーから主キーカラムへのマッピングを定義するものです。
<id name="propertyName" (1) type="typename" (2) column="column_name" (3) unsaved-value="any|none|null|id_value" (4) access="field|property|ClassName"> (5) <generator class="generatorClass"/> (6) </id>
番号 | 名前 | 必須 | 説明 |
---|---|---|---|
(1) | name | optional | 識別子プロパティー名 指定しない場合、識別子プロパティーをもたないと見なされます。 |
(2) | type | optional | Hibernate の型を指示する名前 |
(3) | column | optional | 識別子プロパティがマッピングされる、テーブル上の主キーカラム名。デフォルトは name 属性の値。 |
(4) | unsaved-value | optional |
新規インスタンスであることを示す識別子プロパティ値。デフォルトは null です。 |
(5) | access | optional | プロパティの値にアクセスするのに Hibernate が使用する戦略。 デフォルトは property 。property を指定した場合、getter/setter を利用してプロパティにアクセスする。直接フィールドの値にアクセスさせるには「field」を指定する。また、net.sf.hibernate.property.PropertyAccessor インタフェースを実装するクラスを指定することも可能。 |
(6) | generator 要素 | ○ | 識別子プロパティの値を生成するジェネレータを指定する。詳細は次節で説明します。 |