S2TopLink-JPAには、永続クラスやマッピングファイルを自動的に検出し永続ユニットに登録する機能があります。
検出/登録はSMART deploy
の命名規約を利用して行われます。
自動検出
永続クラスを自動検出するには次の条件を満たす必要があります。
- SMART deployが有効である
クラスにEntity
アノテーション、Embeddable
アノテーション、MappedSuperclass
アノテーションのいずれかが付与されている- クラスがentityパッケージまたはentityパッケージのサブパッケージに存在する
(entityパッケージとはconvention.dicon
に指定したルートパッケージの直下の個別パッケージが「entity
」という名前のパッケージです。例えば、ルートパッケージが「hoge.example」の場合、「hoge.example.entity」がentityパッケージです。)
マッピングファイルを自動検出するには次の条件を満たす必要があります。
- SMART deployが有効である
- マッピングファイルの名称が
XxxOrm.xml
(Xxx
は任意の名称)である - マッピングファイルがentityパッケージまたはentityパッケージのサブパッケージに存在する、もしくはdaoパッケージまたはdaoパッケージのサブパッケージに存在する
(daoパッケージとはconvention.dicon
に指定したルートパッケージの直下の個別パッケージが「dao
」という名前のパッケージです。例えば、ルートパッケージが「hoge.example」の場合、「hoge.example.dao」がdaoパッケージです。)
JPA標準のマッピングファイルであるMETA-INF/orm.xml
は、SMART deployの有効/無効にかかわらずTopLink Essentialsにより自動的に読み込まれます。
永続ユニット毎の自動登録
自動検出された永続クラスとマッピングファイルは以下の規則により特定の永続ユニットに登録されます。この規則は複数の永続ユニットを同時に利用する場合に特に重要です。複数の永続ユニットを使う場合の設定については複数Unitの使用 を参照してください。
永続クラスもしくはマッピングファイルがentityパッケージ(もしくはdaoパッケージ)直下に置かれている場合、それらはデフォルトの永続ユニット(persistenceUnit
)に登録されます。
永続クラスもしくはマッピングファイルがentityパッケージ(もしくはdaoパッケージ)のサブパッケージに置かれている場合、それらはxxxPersistenceUnit
(xxx
はサブパッケージ名)という名前の永続ユニットに登録されます。
なお、JPA標準のマッピングファイルであるMETA-INF/orm.xml
は、TopLink Essentialsによりすべての永続ユニットに自動的に登録されます。
自動登録の例
entityパッケージがhoge.example.entityである場合、hoge.example.entityに属するHogeクラスとサブパッケージhoge.example.entity.fooに属するBarクラスは異なる永続ユニットに登録されます。
登録対象である永続クラスの完全修飾名 | 登録先の永続ユニット名 | 説明 |
---|---|---|
hoge.example.entity.Hoge | persistenceUnit | デフォルトの永続ユニットである「persistenceUnit 」に登録されます。 |
hoge.example.entity.foo.Bar | fooPeristenceUnit | サブパッケージ「foo 」とサフィックス「PersistenceUnit 」を組み合わせた名称を持つ永続ユニット「fooPersistenceUnit 」に登録されます。 |
TopLink Essentialsの自動検出機能との違い
TopLink Essentialsにも自動検出機能が備わっています。S2TopLink-JPAの機能との違いを以下に示します。S2TopLink-JPA | TopLink Essentials | |
---|---|---|
検出の対象 | ・永続クラス ・xxxOrm.xml |
・永続クラス ・META-INF/orm.xml |
検出の範囲 | ・entityパッケージとそのサブパッケージ ・daoパッケージとそのサブパッケージ |
・persistence.xmlが属するディレクトリ ・persistence.xmlが属するjarファイル ・persistence.xmのjar-file要素に指定したjarファイル |