Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
エンティティを継承した場合,クラス階層をテーブルにマッピングする方法を継承マッピング戦略として指定できます。継承マッピング戦略は,@InheritanceまたはO/Rマッピングファイルの<entity>タグの<inheritance>タグを使用して指定します。
継承マッピング戦略には次の3種類があります。
ただし,CJPAプロバイダでは,TABLE PER CLASS戦略は使用できません。CJPAプロバイダを使用している場合で,TABLE PER CLASS戦略を指定したときには,アプリケーションの起動時に例外が発生します。
これらはjavax.persistence.DiscriminatorType列挙型の値で指定されます。それぞれの戦略について説明します。
SINGLE TABLE戦略とは,エンティティクラスの継承階層にあるすべてのクラスが一つのテーブルにマップする戦略方法です。そのため,テーブルではクラスを識別するためのカラムとして,識別カラムを持つ必要があります。
識別カラムは@DiscriminatorColumn,またはO/Rマッピングファイルで指定します。なお,デフォルトの識別カラム名は「DTYPE」です。データベースに識別カラムがない場合,アプリケーションの実行時に例外が発生します。
識別カラムに格納される値を指定したい場合には,@DiscriminatorValueまたはO/Rマッピングファイルの<entity>タグ下の<discriminator-value>タグを使用して指定します。
JOINED戦略とは,クラス階層の最上位は単一のテーブルにマップする戦略方法です。各サブクラスは,スーパークラスから継承されていないサブクラス特有のフィールドと,スーパークラス表の主キーの外部キーとして機能する主キー列を持つ別々のテーブルで示されます。
JOINED戦略の場合も,SINGLE TABLEの場合と同様にスーパークラスがマップされるテーブルに識別カラムを持つ必要があります。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.