6.2. コレクションのマッピング


注記

多くの一般的なリレーショナルモデルに対応するコレクション向けに生成可能な マッピングにはかなりの幅があります。様々なマッピング宣言がどのようにデータベーステーブルに変換されるかを知るために、スキーマ生成ツールを使ってみると良いでしょう。
コレクションをマッピングする際に利用するHibernateマッピング要素は、インターフェースの型に依存します。例えば、<set> 要素は Set 型のプロパティをマッピングするために使います。
<class name="Product">
    <id name="serialNumber" column="productSerialNumber"/>
    <set name="parts">
        <key column="productSerialNumber" not-null="true"/>
        <one-to-many class="Part"/>
    </set>
</class>
Copy to Clipboard Toggle word wrap
マッピング要素には <set> の他に <list><map><bag><array><primitive-array> があります。代表として、 <map> 要素を下記に示します。
<map
    name="propertyName"                                          
    table="table_name"                                           
    schema="schema_name"                                         
    lazy="true|extra|false"                                      
    inverse="true|false"                                         
    cascade="all|none|save-update|delete|all-delete-orphan|delete-orphan"    
    sort="unsorted|natural|comparatorClass"                      
    order-by="column_name asc|desc"                              
    where="arbitrary sql where condition"                        
    fetch="join|select|subselect"                                
    batch-size="N"                                               
    access="field|property|ClassName"                            
    optimistic-lock="true|false"                                 
    mutable="true|false"                                         
    node="element-name|."
    embed-xml="true|false"
>
 
    <key .... />
    <map-key .... />
    <element .... />
</map>
Copy to Clipboard Toggle word wrap

1

name コレクションのプロパティ名

2

table(オプション - デフォルトはプロパティ名)コレクションテーブルの名前。これは一対多関連では使用しません。

3

schema (オプション)テーブルスキーマの名前。ルート要素で宣言されているスキーマより優先されます。

4

lazy(オプション - デフォルトは true)遅延フェッチを無効にし、関連を常に即時にフェッチにするために使用します。または、コレクションを初期化しない多くの操作において、 「extra-lazy」フェッチを有効にするために使用します。これは大きなコレクションに適しています。

5

inverse (オプション - デフォルトは false) このコレクションが双方向関連の「逆」側であるとマークします。

6

cascade (オプション - デフォルトは none):子エンティティへのカスケード操作を有効にします。

7

sort(オプション): naturalな順序でソートされた コレクションもしくは、ある Comparator クラスを指定します。

8

order-by(オプション、 JDK1.4 のみ)MapSet、bag のイテレーション順序を定義するテーブルカラムを指定すると共に、オプションとして ascdesc を指定します。

9

where (オプション)コレクションの検索や削除の際に使う任意の SQL のWHERE 条件を指定します。これは、利用可能なデータの一部分だけをコレクションが含むべきときにこれは有用です。

10

fetch(オプション - デフォルトは select) 外部結合によるフェッチ、順次選択フェッチ (sequential select fetch) 、順次サブセレクトフェッチ (sequential subselect fetch) のいずれかを選択してください。

11

batch-size(オプション - デフォルトは 1)このコレクションのインスタンスを遅延フェッチするために、「バッチサイズ」を指定します。

12

access(オプション - デフォルトは property)Hibernate がコレクションプロパティの値にアクセスするために使用する戦略です。

13

optimistic-lock (オプション - デフォルトは true) コレクションの状態を変えることによって、そのオーナーであるエンティティのバージョンがインクリメントされるかを指定します。一対多関連では無効に設定するのが妥当です。

14

mutable(オプション - デフォルトは truefalse 値は、コレクションの要素が決して変更されないことを表します。一部の場合で若干パフォーマンスを高めることができます。

6.2.1. コレクションの外部キー

コレクションのインスタンスは、データベース内では、そのコレクションを所有するエンティティの外部キーによって識別されます。この外部キーはコレクションテーブルの コレクションキーカラム またはカラムと呼ばれます。コレクションキーカラムは <key> 要素によりマッピングします。
外部キーカラムには null 設定制約があるかもしれません。ほとんどのコレクションに当てはまるでしょう。単方向の一対多関連において、外部キーカラムはデフォルトで null を許容する設定になっています。よって、not-null="true" を指定する必要があるかもしれません。
<key column="productSerialNumber" not-null="true"/>
Copy to Clipboard Toggle word wrap
外部キーの制約が ON DELETE CASCADE を使う場合もあります。
<key column="productSerialNumber" on-delete="cascade"/>
Copy to Clipboard Toggle word wrap
<key> 要素のすべての定義については前の章を参照してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat