Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


8.22 javax.persistenceパッケージに含まれるアノテーションのサポート範囲

javax.persistenceパッケージに含まれるアノテーションの一覧およびアノテーションを指定する際の注意事項について説明します。

なお,マッピング情報はアノテーションの代わりにO/Rマッピングファイルで指定することもできます。アノテーションとO/Rマッピングファイルとの対応については,「8.22.59 アノテーションとO/Rマッピングとの対応」を参照してください。

アノテーションを指定する際の注意事項
  • アプリケーションサーバのJPA機能では,DDL出力機能に関連する属性に対応していません。

  • アノテーションで同じカラム名を複数指定する場合は,大文字および小文字をそろえて指定してください。

  • フィールド名またはメソッド名をカラム名に割り当てた場合,アプリケーションサーバのJPA機能では文字列を大文字として扱います。対応するアノテーションでカラム名を指定する場合は,大文字にしてください。

  • アクセスタイプは,アノテーションを付与する場所によって決まります。ただし,アクセスタイプがフィールドとプロパティで混在した場合は,フィールドの設定が有効になります。

  • プロパティ名は,アクセサメソッドのgetまたはset(is)を除いた文字列によって次のように決まります。

    ・最初の二文字が大文字の場合,そのままの文字列になります。

    ・最初の二文字が大文字ではない場合,最初の文字を小文字に変換した文字列になります。

    ・一文字の場合,最初の文字を小文字に変換した文字列になります。

アノテーション一覧

アノテーションの区分

アノテーション名

概要

エンティティのアノテーション

@Entity

クラスがエンティティであることを示します。

テーブル・カラム関連のアノテーション

@Column

永続化フィールドまたは永続化プロパティと,データベース上のカラムとのマッピングを指定します。

@JoinColumn

エンティティクラス間の関連づけで,結合表のための外部キーカラムまたは外部キーカラムから参照された,結合先テーブルのカラムを指定します。

@JoinColumns

@JoinColumnを複数同時に記述する場合に使用します。

@JoinTable

次のクラスに設定する結合表を指定するアノテーションです。

  • ManyToManyリレーションシップを指定する場合の所有者側のクラス

  • 片方向のOneToManyリレーションシップを持つクラス

@PrimaryKeyJoinColumn

ほかのテーブルと結合する場合に,外部キーとして使われるカラムを指定します。

@PrimaryKeyJoinColumns

@PrimaryKeyJoinColumnを複数同時に記述する場合に使用します。

@SecondaryTable

エンティティクラスにセカンダリテーブルを指定します。

@SecondaryTables

@SecondaryTableを複数同時に記述する場合に使用します。

@Table

エンティティクラスにプライマリテーブルを指定します。

@UniqueConstraint

プライマリテーブルまたはセカンダリテーブルに対して,CREATE文を生成する場合にユニーク制約を含めることを指定します。

なお,このアノテーションは,CJPAプロバイダには対応していません。

ID関連のアノテーション

@EmbeddedId

埋め込み可能クラスの複合プライマリキーであることを指定します。

@GeneratedValue

プライマリキーカラムにユニークな値を自動で生成,付与する方法を指定します。

@Id

エンティティクラスのプライマリキーのプロパティ,またはフィールドであることを指定します。

@IdClass

エンティティクラスの複数のフィールドまたはプロパティへマップされた複合プライマリキークラスを指定します。

@SequenceGenerator

プライマリキーを作成するシーケンスジェネレータの設定を指定します。

@TableGenerator

プライマリキーを作成するジェネレータの設定を指定します。

ロックのアノテーション

@Version

楽観的ロック機能を使用するために用いるversionフィールドまたはversionプロパティを指定します。

マッピング関連のアノテーション

@Basic

最も単純なデータベースのカラムへのマッピングの型を示します。

@Embeddable

埋め込みクラスであることを指定します。

@Embedded

埋め込み先のエンティティクラス内で,埋め込みクラスのインスタンス値を示す永続化プロパティまたは永続化フィールドであることを指定します。

@Enumerated

永続化フィールドまたは永続化プロパティを列挙型として指定します。

@Lob

データベースがサポートしているlargeオブジェクト型の永続化フィールドまたは永続化プロパティであることを指定します。

@MapKey

OneToManyリレーションシップ,またはManyToManyリレーションシップで,被所有者側のエンティティクラスがjava.util.Map型で示される場合にマップ内のオブジェクト識別に用いられるマップキーを指定します。

@OrderBy

エンティティの情報を取得するとき,コレクションが評価した順番を指定します。

@Temporal

時刻を表す型(java.util.Dateおよびjava.util.Calendar)を持つ永続化プロパティまたは永続化フィールドに指定します。

@Transient

永続化しないエンティティクラス,マップドスーパークラス,または埋め込みクラスのフィールドまたはプロパティであることを指定します。

リレーション関連のアノテーション

@ManyToMany

指定したクラスがManyToManyリレーションシップであることを示し,所有者側のエンティティクラスから被所有者側のエンティティクラスへの複数の関連を指定します。

@ManyToOne

指定したクラスがManyToOneリレーションシップであることを示し,被所有者側のエンティティクラスへの関連を指定します。

@OneToMany

指定したクラスがOneToManyリレーションシップであることを示し,所有者側のエンティティクラスから被所有者側のエンティティクラスへの複数の関連を指定します。

@OneToOne

指定したクラスがOneToOneリレーションシップであることを示し,エンティティクラス間の一つの関連を指定します。

継承・オーバーライド関連のアノテーション

@AssociationOverride

マップドスーパークラスや埋め込みクラスで指定された,ManyToOneリレーションシップまたはOneToOneリレーションシップで使用する設定をオーバーライドします。

@AssociationOverrides

@AssociationOverrideを複数同時に記述する場合に使用します。

@AttributeOverride

次に示すマッピング情報をオーバーライドします。

  • @Basicが指定された(またはデフォルトで適用された)プロパティ,フィールド

  • @Idで指定されたプロパティ,フィールド

@AttributeOverrides

@AttributeOverrideを複数同時に記述する場合に使用します。

@DiscriminatorColumn

SINGLE_TABLE戦略またはJOINED戦略で使用する識別用カラムを指定します。

エンティティクラスの継承で,スーパークラスとなるエンティティクラスに付与します。

@DiscriminatorValue

SINGLE_TABLE戦略またはJOINED戦略で使用する識別用カラムの値を指定します。

@Inheritance

エンティティクラス階層で使われる継承マッピング戦略を指定します。

@MappedSuperclass

マップドスーパークラスであることを指定します。

クエリ関連のアノテーション

@ColumnResult

SQLのクエリ結果をエンティティクラスとマッピングするためのカラムを指定します。

@EntityResult

SQLのクエリ結果をマッピングするエンティティクラスを指定します。

@FieldResult

SQLのクエリ結果をマッピングするフィールドを指定します。

@NamedNativeQueries

@NamedNativeQueryを複数同時に記述する場合に使用します。

@NamedNativeQuery

SQLで名前付きクエリを指定します。

@NamedQueries

@NamedQueryを複数同時に記述する場合に使用します。

@NamedQuery

JPQLの名前付きクエリを指定します。

@QueryHint

データベース固有のクエリのヒントを指定します。

@SqlResultSetMapping

SQLのクエリの結果セットマッピングを指定します。

@SqlResultSetMappings

@SqlResultSetMappingを複数同時に記述する場合に使用します。

イベント・コールバック関連のアノテーション

@EntityListeners

エンティティクラスまたはマップドスーパークラスで使用されるコールバックリスナクラスを指定します。

@ExcludeDefaultListeners

次に示すクラスに対して,デフォルトリスナを抑止するアノテーションです。

  • エンティティクラス

  • マップドスーパークラス

  • エンティティクラスまたはマップドスーパークラスのサブクラス

@ExcludeSuperclassListeners

次に示すクラスに対して,スーパークラスリスナを抑止するアノテーションです。

  • エンティティクラス

  • マップドスーパークラス

  • エンティティクラスまたはマップドスーパークラスのサブクラス

@PostLoad

データベースにSELECT文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。

@PostPersist

データベースにINSERT文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。

@PostRemove

データベースにDELETE文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。

@PostUpdate

データベースにUPDATE文を発行したあとに呼び出されるコールバックメソッドであることを示すアノテーションです。

@PrePersist

データベースにINSERT文を発行する前に呼び出されるコールバックメソッドであることを示すアノテーションです。

@PreRemove

データベースにDELETE文を発行する前に呼び出されるコールバックメソッドであることを示すアノテーションです。

@PreUpdate

データベースに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 コールバックメソッドの指定方法」を参照してください。

〈この節の構成〉