EJB 3.0(Public Draft)入門記 Java Persistence API Chapter7 その1
7章突入。
Chapter 7 Container and Provider Contracts for Deployment and Bootstrapping
この章ではデプロイメントとブートストラッピングに関してJ2EEコンテナと永続プロバイダの要件が定義されるそうです。PersistenceProviderというクラスが重要みたい。
7.1 J2EE Container Deployment
まずはJ2EEの話。コンテナへのデプロイはparファイルという形式で行われるとのこと。parは1つのpersistence.xmlを含むことができます。含まなくてもOKです。7.1.1 Responsibilities of Container
コンテナの責務です。主要なものを箇条書き。コンテナは...- EntityManagerの名前やentity-mapping.xmlや管理するクラスについてChapter6で述べたようなデフォルトを適用する
- 永続メタデータを読み、名前付けされたEntityManagerをデプロイするたびに永続javax.persistence.spi.PersistenceProviderの実装クラスを割り出す
- PersistenceProviderをインスタンス化しcreateContainerEntityManagerFactoryメソッドを呼び出す
- EntityManagerFactoryのインスタンスを受け取りこれを使いコンテナ管理のEntityManagerを作成する
- parが再デプロイされるたびに必ずcreateContainerEntityManagerFactoryメソッドを呼び出す
7.1.2 Responsibilities of Persistence Provider
永続プロバイダの責務です。主要なものを箇条書き。永続プロバイダは...- javax.persistence.spi.PersistenceProviderを実装する必要がある
- createContainerEntityManagerFactoryメソッドが呼び出されたときにメタデータを受け取り処理する
- EntityManagerFactoryのインスタンスをつくり、EntityManagerのメタデータと関連付け、そのインスタンスを返す。
7.1.3 javax.persistence.spi.PersistenceProvider
すでに何度も名前が登場しているPersistenceProvider。永続プロバイダが実装しなければいけないインタフェースです。コンテナやjavax.persistence.spi.Persistenceクラス(コンテナ外で実行する場合)から呼ばれます。JavaDocコメントを省くとこんな感じ。シンプルです。package javax.persistence.spi; public interface PersistenceProvider { public EntityManagerFactory createEntityManagerFactory(String emName, Map map); public EntityManagerFactory createContainerEntityManagerFactory(PersistenceInfo info); }
7.1.4 javax.persistence.spi.PersistenceInfo
PersistenceProviderのcreateContainerEntityManagerFactoryメソッドの引数となるインタフェースです。これもJavaDocコメント省くとこんな感じ。ほとんどのメソッドがpersistence.xmlの要素に対応していますね。package javax.persistence.spi; import javax.sql.DataSource; public interface PersistenceInfo { public String getEntityManagerName(); public String getPersistenceProviderClassName(); public DataSource getJtaDataSource(); public DataSource getNonJtaDataSource(); public List<String> getMappingFileNames(); public List<URL> getJarFiles(); public List<String> getEntityClassNames(); public Properties getProperties(); public ClassLoader getClassLoader(); public URL getPersistenceXmlFileUrl(); public URL getEntityMappingsXmlFileUrl(); }
今日はここまで。次回は J2SE の話、7.2 Bootstrapping in J2SE Environments です。