8.22 javax.persistenceパッケージに含まれるアノテーションのサポート範囲
javax.persistenceパッケージに含まれるアノテーションの一覧およびアノテーションを指定する際の注意事項について説明します。
なお,マッピング情報はアノテーションの代わりにO/Rマッピングファイルで指定することもできます。アノテーションとO/Rマッピングファイルとの対応については,「8.22.59 アノテーションとO/Rマッピングとの対応」を参照してください。
- アノテーションを指定する際の注意事項
-
-
アプリケーションサーバのJPA機能では,DDL出力機能に関連する属性に対応していません。
-
アノテーションで同じカラム名を複数指定する場合は,大文字および小文字をそろえて指定してください。
-
フィールド名またはメソッド名をカラム名に割り当てた場合,アプリケーションサーバのJPA機能では文字列を大文字として扱います。対応するアノテーションでカラム名を指定する場合は,大文字にしてください。
-
アクセスタイプは,アノテーションを付与する場所によって決まります。ただし,アクセスタイプがフィールドとプロパティで混在した場合は,フィールドの設定が有効になります。
-
プロパティ名は,アクセサメソッドのgetまたはset(is)を除いた文字列によって次のように決まります。
・最初の二文字が大文字の場合,そのままの文字列になります。
・最初の二文字が大文字ではない場合,最初の文字を小文字に変換した文字列になります。
・一文字の場合,最初の文字を小文字に変換した文字列になります。
-
- アノテーション一覧
-
アノテーションの区分
アノテーション名
概要
エンティティのアノテーション
クラスがエンティティであることを示します。
テーブル・カラム関連のアノテーション
永続化フィールドまたは永続化プロパティと,データベース上のカラムとのマッピングを指定します。
エンティティクラス間の関連づけで,結合表のための外部キーカラムまたは外部キーカラムから参照された,結合先テーブルのカラムを指定します。
@JoinColumnを複数同時に記述する場合に使用します。
次のクラスに設定する結合表を指定するアノテーションです。
-
ManyToManyリレーションシップを指定する場合の所有者側のクラス
-
片方向のOneToManyリレーションシップを持つクラス
ほかのテーブルと結合する場合に,外部キーとして使われるカラムを指定します。
@PrimaryKeyJoinColumnを複数同時に記述する場合に使用します。
エンティティクラスにセカンダリテーブルを指定します。
@SecondaryTableを複数同時に記述する場合に使用します。
エンティティクラスにプライマリテーブルを指定します。
@UniqueConstraint
プライマリテーブルまたはセカンダリテーブルに対して,CREATE文を生成する場合にユニーク制約を含めることを指定します。
なお,このアノテーションは,CJPAプロバイダには対応していません。
ID関連のアノテーション
埋め込み可能クラスの複合プライマリキーであることを指定します。
プライマリキーカラムにユニークな値を自動で生成,付与する方法を指定します。
エンティティクラスのプライマリキーのプロパティ,またはフィールドであることを指定します。
エンティティクラスの複数のフィールドまたはプロパティへマップされた複合プライマリキークラスを指定します。
プライマリキーを作成するシーケンスジェネレータの設定を指定します。
プライマリキーを作成するジェネレータの設定を指定します。
ロックのアノテーション
楽観的ロック機能を使用するために用いるversionフィールドまたはversionプロパティを指定します。
マッピング関連のアノテーション
最も単純なデータベースのカラムへのマッピングの型を示します。
埋め込みクラスであることを指定します。
埋め込み先のエンティティクラス内で,埋め込みクラスのインスタンス値を示す永続化プロパティまたは永続化フィールドであることを指定します。
永続化フィールドまたは永続化プロパティを列挙型として指定します。
データベースがサポートしているlargeオブジェクト型の永続化フィールドまたは永続化プロパティであることを指定します。
OneToManyリレーションシップ,またはManyToManyリレーションシップで,被所有者側のエンティティクラスがjava.util.Map型で示される場合にマップ内のオブジェクト識別に用いられるマップキーを指定します。
エンティティの情報を取得するとき,コレクションが評価した順番を指定します。
時刻を表す型(java.util.Dateおよびjava.util.Calendar)を持つ永続化プロパティまたは永続化フィールドに指定します。
永続化しないエンティティクラス,マップドスーパークラス,または埋め込みクラスのフィールドまたはプロパティであることを指定します。
リレーション関連のアノテーション
指定したクラスがManyToManyリレーションシップであることを示し,所有者側のエンティティクラスから被所有者側のエンティティクラスへの複数の関連を指定します。
指定したクラスがManyToOneリレーションシップであることを示し,被所有者側のエンティティクラスへの関連を指定します。
指定したクラスがOneToManyリレーションシップであることを示し,所有者側のエンティティクラスから被所有者側のエンティティクラスへの複数の関連を指定します。
指定したクラスがOneToOneリレーションシップであることを示し,エンティティクラス間の一つの関連を指定します。
継承・オーバーライド関連のアノテーション
マップドスーパークラスや埋め込みクラスで指定された,ManyToOneリレーションシップまたはOneToOneリレーションシップで使用する設定をオーバーライドします。
@AssociationOverrideを複数同時に記述する場合に使用します。
次に示すマッピング情報をオーバーライドします。
-
@Basicが指定された(またはデフォルトで適用された)プロパティ,フィールド
-
@Idで指定されたプロパティ,フィールド
@AttributeOverrideを複数同時に記述する場合に使用します。
SINGLE_TABLE戦略またはJOINED戦略で使用する識別用カラムを指定します。
エンティティクラスの継承で,スーパークラスとなるエンティティクラスに付与します。
SINGLE_TABLE戦略またはJOINED戦略で使用する識別用カラムの値を指定します。
エンティティクラス階層で使われる継承マッピング戦略を指定します。
マップドスーパークラスであることを指定します。
クエリ関連のアノテーション
SQLのクエリ結果をエンティティクラスとマッピングするためのカラムを指定します。
SQLのクエリ結果をマッピングするエンティティクラスを指定します。
SQLのクエリ結果をマッピングするフィールドを指定します。
@NamedNativeQueryを複数同時に記述する場合に使用します。
SQLで名前付きクエリを指定します。
@NamedQueryを複数同時に記述する場合に使用します。
JPQLの名前付きクエリを指定します。
データベース固有のクエリのヒントを指定します。
SQLのクエリの結果セットマッピングを指定します。
@SqlResultSetMappingを複数同時に記述する場合に使用します。
イベント・コールバック関連のアノテーション※
エンティティクラスまたはマップドスーパークラスで使用されるコールバックリスナクラスを指定します。
次に示すクラスに対して,デフォルトリスナを抑止するアノテーションです。
-
エンティティクラス
-
マップドスーパークラス
-
エンティティクラスまたはマップドスーパークラスのサブクラス
次に示すクラスに対して,スーパークラスリスナを抑止するアノテーションです。
-
エンティティクラス
-
マップドスーパークラス
-
エンティティクラスまたはマップドスーパークラスのサブクラス
データベースにSELECT文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにINSERT文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにDELETE文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにUPDATE文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにINSERT文を発行する前に呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにDELETE文を発行する前に呼び出されるコールバックメソッドであることを示すアノテーションです。
データベースにUPDATE文を発行する前に呼び出されるコールバックメソッドであることを示すアノテーションです。
EntityManagerとEntityManagerFactoryのリファレンス関連のアノテーション
@PersistenceContext
コンテナ管理のEntityManagerを定義します。詳細はマニュアル「アプリケーションサーバ リファレンス API編」の「2.7 javax.persistenceパッケージ」を参照してください。
@PersistenceContexts
@PersistenceContextを複数同時に記述する場合に使用します。詳細はマニュアル「アプリケーションサーバ リファレンス API編」の「2.7 javax.persistenceパッケージ」を参照してください。
@PersistenceProperty
コンテナ管理のEntityManagerにプロパティを設定します。詳細はマニュアル「アプリケーションサーバ リファレンス API編」の「2.7 javax.persistenceパッケージ」を参照してください。
@PersistenceUnit
EntityManagerFactoryへの永続化ユニットを定義します。詳細はマニュアル「アプリケーションサーバ リファレンス API編」の「2.7 javax.persistenceパッケージ」を参照してください。
@PersistenceUnits
@PersistenceUnitを複数同時に記述する場合に使用します。詳細はマニュアル「アプリケーションサーバ リファレンス API編」の「2.7 javax.persistenceパッケージ」を参照してください。
注※ コールバックメソッドの詳細については,「8.15 コールバックメソッドの指定方法」を参照してください。
-
- 〈この節の構成〉
-