EJB 3.0(Public Draft)入門記 Java Persistence API Chapter2 その15

今回は3番目の継承マッピング戦略であるJoined Subclass Strategyについてです。

2.1.10.3 Joined Subclass Strategy

joined subclass strategyでは、クラス階層のルートは単一のテーブルで表されます。それぞれのサブクラスはサブクラスのフィールドのみ(継承したものは含まない)を含む別々のテーブルで表されます。またサブクラスのテーブルはプライマリキーを含むカラムをもちます。このプライマリキーはスーパークラスのテーブルのプライマリキーを参照する外部キーなるそうです。

joined subclass strategyはエンティティ間のポリモーフィックなリレーションシップをサポートするらしいです。

欠点は、サブクラスのインスタンスを生成するときに複数回の結合の実行が必要になることらしいです。深いクラス階層ではパフォーマンスが問題になるかもしれないということです。クラス階層をまたがるクエリの実行時も結合がつかわれるそうです。


例は...Chapter2 その11の2.1.9.1 Abstract Entity Classesで使ったものがjoin subclass strategyを使ってました。ただdiscriminatorValueの使用は不要、親はAbstractである必要なし、かな。

3つの戦略の中でjoined subclass strategyが一番すっきりしていて使いやすいような気がします。


今回の入門記はかなりさっぱり(というか手抜き)。これでChapter 2終わり。次回からChapter 3に入る予定です。
実家に帰るのでちょっとだけ入門記休もうかと思います。