目次へ

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

6.4 generator 要素

id 要素は、generator 要素を持つことができます。これは、主キーとなるプロパティの値を発生させる方法 を指定するための要素です。大きく自動的に値を取得してくれるものと、自分で値を登録するものに分かれます。

<id name="id" type="long" column="uid" unsaved-value="0">
    <generator class="net.sf.hibernate.id.TableHiLoGenerator">
    <param name="table">uid_table</param>
    <param name="column">next_hi_value_column</param>
    </generator>
</id>
	

generator 要素の class 属性では、ジェネレータとして利用するクラスを指定します。このクラスには、org.hibernate.id.IdentifierGenerator インタフェースを実装するクラスを指定することが可能で、Hibernate には、同インタフェースを実装した組込みのジェネレータクラスがいくつか用意されています。組込みのジェネレータには、ショートカット名が用意されており簡単に利用できるようになっています。ほとんどの場合、この組込みのジェネレータを利用することになるでしょう。
ここでは、いくつかの重要な組込みジェネレータを紹介します。

ショートカット名 値のtype 備考
identity int,long,short DB2, MySQL, MS SQL Server, Sybase, HypersonicSQLのアイデンティティ・カラムを サポートします。
sequence int,long,short DB2, PostgreSQL, Oracle, SAP DB, McKoiのシーケンス、 またはInterbaseのジェネレータを使います。
hilo int,long,short hi/loアルゴリズムを使用してIDを生成します。
assigned   アプリケーションがIDを与える方法です。

assigned ジェネレータは、アプリケーションに識別子を割り当てさせたい場合に利用します。このジェネレータは、オブジェクトの識別子プロパティーに既に割り当てられている識別子を使います。このため、このジェネレータを利用しているエンティティは、セッションの saveOrUpdate() メソッドによって保存することができません。セッションの save() もしくは update() を明示的に呼び出すようにする必要があります。

6.5 property 要素

property 要素では、永続化される JavaBean のプロパティに関する記述を行います。

        <property name="propertyName"                (1)
                     column="column_name"               (2) 
                     type="typename"                    (3)
                     update="true|false"                (4)
                     insert="true|false"                (4)
                     formula="arbitrary SQL expression" (5)
                     access="field|property|ClassName"  (6)
        />
	
番号 名前 必須 説明
(1) name プロパティー名
(2) column optional マッピングされるテーブルのカラム名
省略されると name 属性と同じ値となる。
(3) type optional Hibernate 型を示す名前
(4) update,insert optional

マッピングされたカラムが、SQL の UPDATE(INSERT)文に含まれることを指定する。 false にセットすると、このプロパティは UPDATE(INSERT)で更新(挿入)されない。デフォルトは true

(5) formula optional プロパティ値が算出(導出)される場合、導出のためのSQL文を指定する。
(6) access optional プロパティの値にアクセスするのに Hibernate が使用する戦略。
デフォルトは property 。property を指定した場合、getter/setter を利用してプロパティにアクセスする。直接フィールドの値にアクセスさせるには「field」を指定する。また、net.sf.hibernate.property.PropertyAccessor インタフェースを実装するクラスを指定することも可能。

↑このページの先頭へ

こちらもチェック!

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