クラス DefaultPersistenceUnitManager
- 実装されたすべてのインターフェース:
Aware
、InitializingBean
、ResourceLoaderAware
、LoadTimeWeaverAware
、PersistenceUnitManager
PersistenceUnitManager
インターフェースのデフォルトの実装。LocalContainerEntityManagerFactoryBean
によって内部デフォルトとして使用されます。persistence.xml
ファイルの標準 JPA スキャンをサポートし、構成可能なファイルの場所、JDBC DataSource ルックアップ、およびロード時のウィービングを備えています。
通常は PersistenceManagedTypesScanner
を使用して構築される PersistenceManagedTypes
の状態に基づいて永続化ユニットを構築します。
デフォルトの XML ファイルの場所は classpath*:META-INF/persistence.xml
で、クラスパス内の一致するすべてのファイルをスキャンします(JPA 仕様で定義されています)。DataSource 名はデフォルトで JNDI 名として解釈され、ロード時のウィービングは使用できません(永続プロバイダーでウィービングをオフにする必要があります)。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Stephane Nicoll
- 関連事項:
setPersistenceXmlLocations(java.lang.String...)
setDataSourceLookup(org.springframework.jdbc.datasource.lookup.DataSourceLookup)
setLoadTimeWeaver(org.springframework.instrument.classloading.LoadTimeWeaver)
LocalContainerEntityManagerFactoryBean.setPersistenceUnitManager(org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager)
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
永続性プロバイダーに DataSources を提供する JDBC DataSourceLookup を返し、Spring 管理の DataSource インスタンスに対してpersistence.xml
のデータソース名を解決します。persistence.xml
で何も指定されていない場合、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を返します。persistence.xml
で何も指定されていない場合、JPA 永続プロバイダーがデータベースへのアクセスに使用することになっている JTA 対応 DataSource を返します。JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を返します。protected final MutablePersistenceUnitInfo
getPersistenceUnitInfo
(StringSE persistenceUnitName) 処理された永続性ユニットのこのマネージャーのキャッシュから指定された PersistenceUnitInfo を返し、キャッシュに保持します(つまりこのマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を返します。protected boolean
同じ名前の永続性ユニットのオーバーライドが許可されているかどうかを返します。このマネージャーからデフォルトの PersistenceUnitInfo を取得します。obtainPersistenceUnitInfo
(StringSE persistenceUnitName) このマネージャーから指定された PersistenceUnitInfo を取得します。protected void
サブクラスが各 PersistenceUnitInfo をカスタマイズできるようにするフックメソッド。void
このマネージャーの構成に従って PersistenceUnitInfos を準備します。persistence.xml
ファイルのスキャン、一致するすべてのファイルの解析、それらの構成と後処理。void
setDataSourceLookup
(DataSourceLookup dataSourceLookup) 永続性プロバイダーに DataSources を提供する JDBC DataSourceLookup を指定し、Spring 管理の DataSource インスタンスに対してpersistence.xml
のデータソース名を解決します。void
setDataSources
(MapSE<StringSE, DataSourceSE> dataSources) JPA 永続プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSources を指定し、Spring 管理の DataSources に対してpersistence.xml
のデータソース名を解決します。void
setDefaultDataSource
(DataSourceSE defaultDataSource) persistence.xml
で何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。void
setDefaultJtaDataSource
(DataSourceSE defaultJtaDataSource) persistence.xml
で何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。void
setDefaultPersistenceUnitName
(StringSE defaultPersistenceUnitName) デフォルトの永続性ユニットの名前がある場合は、それを指定します。void
setDefaultPersistenceUnitRootLocation
(StringSE defaultPersistenceUnitRootLocation) ユニット固有の永続性単位根を決定できなかった場合に適用される、デフォルトの永続性単位根の場所を設定します。void
setLoadTimeWeaver
(LoadTimeWeaver loadTimeWeaver) JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を指定します。void
setManagedClassNameFilter
(ManagedClassNameFilter managedClassNameFilter) クラスパススキャンを使用して検出されたエンティティクラスに適用するようにManagedClassNameFilter
を設定します。void
setManagedTypes
(PersistenceManagedTypes managedTypes) エンティティスキャンの代わりに管理対象の型のリストを作成するために使用するPersistenceManagedTypes
を設定します。void
setMappingResources
(StringSE... mappingResources) デフォルトの永続性ユニットの 1 つ以上のマッピングリソース(persistence.xml
の<mapping-file>
エントリに相当)を指定します。void
setPackagesToScan
(StringSE... packagesToScan) persistence.xml
マーカーを含む jar ファイルの JPA の標準スキャンを使用する代わりに、クラスパスのエンティティクラスに Spring ベースのスキャンを使用するかどうかを設定します。void
setPersistenceUnitPostProcessors
(PersistenceUnitPostProcessor... postProcessors) このマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を設定します。void
setPersistenceXmlLocation
(StringSE persistenceXmlLocation) ロードするpersistence.xml
ファイルの場所を指定します。void
setPersistenceXmlLocations
(StringSE... persistenceXmlLocations) ロードするpersistence.xml
ファイルの複数の場所を指定します。void
setResourceLoader
(ResourceLoader resourceLoader) このオブジェクトが実行される ResourceLoader を設定します。void
setSharedCacheMode
(SharedCacheModeEE sharedCacheMode) このマネージャーのすべての永続ユニットに JPA 2.0 共有キャッシュモードを指定し、設定されている場合はpersistence.xml
の値をオーバーライドします。void
setValidationMode
(ValidationModeEE validationMode) このマネージャーのすべての永続ユニットに JPA 2.0 検証モードを指定し、設定されている場合はpersistence.xml
の値をオーバーライドします。
フィールドの詳細
DEFAULT_PERSISTENCE_XML_LOCATION
persistence.xml
ファイルのデフォルトの場所: "classpath *:META-INF/persistence.xml"。- 関連事項:
ORIGINAL_DEFAULT_PERSISTENCE_UNIT_ROOT_LOCATION
永続性ユニットのルート URL のデフォルトの場所: "classpath:"。クラスパスのルートを示します。- 関連事項:
ORIGINAL_DEFAULT_PERSISTENCE_UNIT_NAME
デフォルトの永続性ユニット名。- 関連事項:
logger
コンストラクターの詳細
DefaultPersistenceUnitManager
public DefaultPersistenceUnitManager()
メソッドの詳細
setPersistenceXmlLocation
ロードするpersistence.xml
ファイルの場所を指定します。これらは、Spring リソースの場所および / または場所のパターンとして指定できます。デフォルトは "classpath *:META-INF/persistence.xml" です。
setPersistenceXmlLocations
ロードするpersistence.xml
ファイルの複数の場所を指定します。これらは、Spring リソースの場所および / または場所のパターンとして指定できます。デフォルトは "classpath *:META-INF/persistence.xml" です。
- パラメーター:
persistenceXmlLocations
- 読み取るpersistence.xml
ファイルの場所を識別する Spring リソース文字列の配列
setDefaultPersistenceUnitRootLocation
ユニット固有の永続性単位根を決定できなかった場合に適用される、デフォルトの永続性単位根の場所を設定します。デフォルトは "classpath:"、つまり現在のクラスパスのルート(最も近いルートディレクトリ)です。ユニット固有の解決が機能せず、クラスパスのルートも適切でない場合はオーバーライドされます。
setDefaultPersistenceUnitName
デフォルトの永続性ユニットの名前がある場合は、それを指定します。デフォルトは "default" です。主に、
persistence.xml
なしでスキャンされた永続性ユニットに適用されます。使用可能ないくつかの永続ユニットからデフォルトユニットを選択する場合にも適用できます。setManagedTypes
エンティティスキャンの代わりに管理対象の型のリストを作成するために使用するPersistenceManagedTypes
を設定します。- パラメーター:
managedTypes
- 管理された型- 導入:
- 6.0
setPackagesToScan
persistence.xml
マーカーが含まれている jar ファイルの JPA の標準スキャンを使用する代わりに、クラスパスのエンティティクラスに対して Spring ベースのスキャンを使用するかどうかを設定します。Spring ベースのスキャンの場合、persistence.xml
は必要ありません。ここで検索するベースパッケージを指定するだけです。デフォルトはなしです。クラスパスでエンティティクラスの自動検出を検索するパッケージを指定します。これは、Spring のコンポーネントスキャン機能(
ClassPathBeanDefinitionScanner
)に類似しています。代わりに、AOT 処理によってスキャンロジックを最適化できる
PersistenceManagedTypes
を設定することを検討してください。このようなパッケージスキャンは、Spring で「デフォルトの永続性ユニット」を定義します。これは、
persistence.xml
から発信される定期的に定義されたユニットの隣に存在する可能性があります。その名前はsetDefaultPersistenceUnitName(java.lang.String)
によって決定されます。デフォルトでは、単に "default" です。注: 通常の JPA スキャンと比較して制限がある場合があります。特に、JPA プロバイダーは、
persistence.xml
によって駆動される場合にのみ、プロバイダー固有のアノテーションのアノテーション付きパッケージを取得できます。4.1 では、指定されたJpaVendorAdapter
でサポートされている場合 (たとえば、Hibernate の場合)、Spring のスキャンはアノテーション付きパッケージも検出できます。これらのパッケージに加えて明示的な
mapping resources
が指定されていない場合、このマネージャーはクラスパスでデフォルトのMETA-INF/orm.xml
ファイルを検索し、マッピングファイルがpersistence.xml
ファイルと同じ場所に配置されていない場合はデフォルトユニットのマッピングリソースとして登録します(この場合、標準の JPA のように、そこで定義されている永続性ユニットでのみ使用することを意図していると想定します。setManagedClassNameFilter
クラスパススキャンを使用して検出されたエンティティクラスに適用するようにManagedClassNameFilter
を設定します。- パラメーター:
managedClassNameFilter
- エンティティクラスをフィルタリングするための述語- 導入:
- 6.1.4
setMappingResources
デフォルトの永続性ユニットの 1 つ以上のマッピングリソース(persistence.xml
の<mapping-file>
エントリに相当)を指定します。単独で使用することも、クラスパスでエンティティスキャンと組み合わせて使用することもできます。どちらの場合も、persistence.xml
は使用しません。マッピングリソースは、
ClassLoader.getResource
を介してロードできるように、クラスパスルート ( "META-INF/mappings.xml" や "com/mycompany/repository/mappings.xml" など) を基準にする必要があることに注意してください。packages to scan
の横に明示的なマッピングリソースが指定されていない場合、このマネージャーはクラスパスでデフォルトのMETA-INF/orm.xml
ファイルを検索し、マッピングファイルがpersistence.xml
ファイルと同じ場所に配置されていない場合はデフォルトユニットのマッピングリソースとして登録します(標準の JPA のように、そこで定義されている永続性ユニットでのみ使用されることを想定している場合)。ここで空の配列 / リストを指定すると、デフォルトの
META-INF/orm.xml
チェックが抑制されることに注意してください。一方、ここでMETA-INF/orm.xml
を明示的に指定すると、persistence.xml
ファイルと同じ場所に配置されている場合でも、そのファイルが登録されます。setValidationMode
このマネージャーのすべての永続ユニットに JPA 2.0 検証モードを指定し、設定されている場合はpersistence.xml
の値をオーバーライドします。- 導入:
- 4.0
- 関連事項:
setDataSources
JPA 永続プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSources を指定し、Spring 管理の DataSources に対してpersistence.xml
のデータソース名を解決します。指定されたマップは、特定の DataSource オブジェクトのデータソース名を定義する必要があり、
persistence.xml
で使用されるデータソース名と一致します。指定しない場合、データソース名は代わりに JNDI 名として解決されます(標準 JPA で定義されています)。- 関連事項:
setDataSourceLookup
永続性プロバイダーに DataSources を提供する JDBC DataSourceLookup を指定し、Spring 管理の DataSource インスタンスに対してpersistence.xml
のデータソース名を解決します。デフォルトは JndiDataSourceLookup で、DataSource 名を JNDI 名として解決します(標準 JPA で定義されています)。DataSource 名を Spring Bean 名に対して解決する場合は、BeanFactoryDataSourceLookup インスタンスを指定します。
あるいは、"dataSources" プロパティを介して名前から DataSource インスタンスへのマップを渡すことを検討してください。
persistence.xml
ファイルで DataSource 名がまったく定義されていない場合は、"defaultDataSource" プロパティを介してデフォルトの DataSource を指定します。getDataSourceLookup
永続性プロバイダーに DataSources を提供する JDBC DataSourceLookup を返し、Spring 管理の DataSource インスタンスに対してpersistence.xml
のデータソース名を解決します。setDefaultDataSource
persistence.xml
で何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。このバリアントは、特別なトランザクション設定がないこと、つまり一般的なリソースローカルを示します。JPA では、ここで渡される DataSource は、以前に登録されていない限り、PersistenceProvider に渡される PersistenceUnitInfo の "nonJtaDataSource" として使用されます。
getDefaultDataSource
persistence.xml
で何も指定されていない場合、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を返します。setDefaultJtaDataSource
persistence.xml
で何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。このバリアントは、JTA がトランザクション型として使用されることになっていることを示します。JPA では、ここで渡される DataSource は、以前に登録されていない限り、PersistenceProvider に渡される PersistenceUnitInfo の "jtaDataSource" として使用されます。
getDefaultJtaDataSource
persistence.xml
で何も指定されていない場合、JPA 永続プロバイダーがデータベースへのアクセスに使用することになっている JTA 対応 DataSource を返します。setPersistenceUnitPostProcessors
public void setPersistenceUnitPostProcessors(@Nullable PersistenceUnitPostProcessor... postProcessors) このマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を設定します。このようなポストプロセッサーは、たとえば、
persistence.xml
から読み取られたメタデータに加えて、さらにエンティティクラスと jar ファイルを登録できます。getPersistenceUnitPostProcessors
このマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を返します。setLoadTimeWeaver
JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を指定します。LoadTimeWeaver を指定する必要はありません。ほとんどのプロバイダーは、クラスインストルメンテーションなしで機能のサブセットを提供することも、JVM の起動時に指定された独自の VM エージェントで動作することもできます。さらに、Spring のエージェントベースのインストルメンテーションが実行時に利用可能な場合、DefaultPersistenceUnitManager は InstrumentationLoadTimeWeaver にフォールバックします。
Spring が提供するウィービングオプションに関して、最も重要なものは、JVM の起動時に指定された Spring 固有の(ただし非常に一般的な)VM エージェントを必要とする InstrumentationLoadTimeWeaver と、利用可能な特定の拡張メソッドに基づいて基盤となる ClassLoader と対話する ReflectiveLoadTimeWeaver です。その上で(たとえば、Spring の TomcatInstrumentableClassLoader との対話)。このような共有 LoadTimeWeaver を作成するために
context:load-time-weaver
XML タグを使用することを検討してください(デフォルトでは環境を自動検出します)。- 次で指定:
- インターフェース
LoadTimeWeaverAware
のsetLoadTimeWeaver
- パラメーター:
loadTimeWeaver
-LoadTimeWeaver
インスタンス (非null
)- 関連事項:
getLoadTimeWeaver
JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を返します。setResourceLoader
インターフェースからコピーされた説明:ResourceLoaderAware
このオブジェクトが実行される ResourceLoader を設定します。これは ResourcePatternResolver であり、
instanceof ResourcePatternResolver
で確認できます。ResourcePatternUtils.getResourcePatternResolver
メソッドも参照してください。通常の Bean プロパティの設定後、InitializingBean の
afterPropertiesSet
またはカスタム init メソッドのような初期コールバックの前に呼び出されます。ApplicationContextAware のsetApplicationContext
の前に呼び出されます。- 次で指定:
- インターフェース
ResourceLoaderAware
のsetResourceLoader
- パラメーター:
resourceLoader
- このオブジェクトによって使用される ResourceLoader オブジェクト- 関連事項:
afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
preparePersistenceUnitInfos
public void preparePersistenceUnitInfos()このマネージャーの構成に従って PersistenceUnitInfos を準備します。persistence.xml
ファイルのスキャン、一致するすべてのファイルの解析、それらの構成と後処理。この準備メソッドが呼び出されるまで、PersistenceUnitInfos を取得することはできません。
getPersistenceUnitInfo
@Nullable protected final MutablePersistenceUnitInfo getPersistenceUnitInfo(StringSE persistenceUnitName) 処理された永続ユニットのこのマネージャーのキャッシュから指定された PersistenceUnitInfo を返し、キャッシュに保持します(つまり、使用するために「取得」するのではなく、後処理のためにアクセスするだけです)。これは
postProcessPersistenceUnitInfo(org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo)
実装で使用でき、同じ名前の既存の永続性ユニットを検出し、マージする可能性があります。- パラメーター:
persistenceUnitName
- 目的の永続性ユニットの名前- 戻り値:
- 可変形式の PersistenceUnitInfo、または利用できない場合は
null
postProcessPersistenceUnitInfo
サブクラスが各 PersistenceUnitInfo をカスタマイズできるようにするフックメソッド。デフォルトの実装は、登録されているすべての PersistenceUnitPostProcessors に委譲します。ポストプロセッサーを再利用できるようにするには、通常、このマネージャーのサブクラスではなく、エンティティクラスや jar ファイルなどをさらに登録することをお勧めします。
- パラメーター:
pui
-persistence.xml
から読み取られた、選択された PersistenceUnitInfo MutablePersistenceUnitInfo として渡されます。- 関連事項:
isPersistenceUnitOverrideAllowed
protected boolean isPersistenceUnitOverrideAllowed()同じ名前の永続性ユニットのオーバーライドが許可されているかどうかを返します。デフォルトは
false
です。たとえば、postProcessPersistenceUnitInfo(org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo)
がそのケースを処理できる場合、true
を返すためにオーバーライドされる可能性があります。obtainDefaultPersistenceUnitInfo
インターフェースからコピーされた説明:PersistenceUnitManager
このマネージャーからデフォルトの PersistenceUnitInfo を取得します。- 次で指定:
- インターフェース
PersistenceUnitManager
のobtainDefaultPersistenceUnitInfo
- 戻り値:
- PersistenceUnitInfo (非
null
)
obtainPersistenceUnitInfo
インターフェースからコピーされた説明:PersistenceUnitManager
このマネージャーから指定された PersistenceUnitInfo を取得します。- 次で指定:
- インターフェース
PersistenceUnitManager
のobtainPersistenceUnitInfo
- パラメーター:
persistenceUnitName
- 目的の永続性ユニットの名前- 戻り値:
- PersistenceUnitInfo (非
null
)