目次へ

6.マッピングファイルの記述

2005.10.24 株式会社四次元データ 瀧下 浩

POJO と テーブルは 1対1 に対応しているわけではなく、POJO を生成するために 複数のテーブルからデータを集めて来る必要がある場合もあります。この章では、 マッピングファイルについて簡単に説明していきます。

6.1 DTD を見てみよう

XMLの設定ファイルの書き方について分からないことがあれば、まずはDTDを見てみることを お勧めします。Hibernate のマッピングファイルは、サンプルのマッピングファイルに記述 してあるとおりの URLに置かれています。 本章では、重要と思われる以下の要素について紹介していくことにします。

  1. class 要素
  2. id 要素
  3. generator 要素
  4. property 要素
  5. many-to-one 要素
  6. 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 です。
この属性は重要で、デフォルト値が null でないプロパティを識別子として利用する際には、必ず指定するようにしましょう。

(5) access optional プロパティの値にアクセスするのに Hibernate が使用する戦略。
デフォルトは property 。property を指定した場合、getter/setter を利用してプロパティにアクセスする。直接フィールドの値にアクセスさせるには「field」を指定する。また、net.sf.hibernate.property.PropertyAccessor インタフェースを実装するクラスを指定することも可能。
(6) generator 要素 識別子プロパティの値を生成するジェネレータを指定する。詳細は次節で説明します。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ