クラス 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 MutablePersistenceUnitInfogetPersistenceUnitInfo(StringSE persistenceUnitName) 処理された永続性ユニットのこのマネージャーのキャッシュから指定された PersistenceUnitInfo を返し、キャッシュに保持します(つまりこのマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を返します。protected boolean同じ名前の永続性ユニットのオーバーライドが許可されているかどうかを返します。このマネージャーからデフォルトの PersistenceUnitInfo を取得します。obtainPersistenceUnitInfo(StringSE persistenceUnitName) このマネージャーから指定された PersistenceUnitInfo を取得します。protected voidサブクラスが各 PersistenceUnitInfo をカスタマイズできるようにするフックメソッド。voidこのマネージャーの構成に従って PersistenceUnitInfos を準備します。persistence.xmlファイルのスキャン、一致するすべてのファイルの解析、それらの構成と後処理。voidsetDataSourceLookup(DataSourceLookup dataSourceLookup) 永続性プロバイダーに DataSources を提供する JDBC DataSourceLookup を指定し、Spring 管理の DataSource インスタンスに対してpersistence.xmlのデータソース名を解決します。voidsetDataSources(MapSE<StringSE, DataSourceSE> dataSources) JPA 永続プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSources を指定し、Spring 管理の DataSources に対してpersistence.xmlのデータソース名を解決します。voidsetDefaultDataSource(DataSourceSE defaultDataSource) persistence.xmlで何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。voidsetDefaultJtaDataSource(DataSourceSE defaultJtaDataSource) persistence.xmlで何も指定されていない場合に、JPA 永続性プロバイダーがデータベースへのアクセスに使用することになっている JDBC DataSource を指定します。voidsetDefaultPersistenceUnitName(StringSE defaultPersistenceUnitName) デフォルトの永続性ユニットの名前がある場合は、それを指定します。voidsetDefaultPersistenceUnitRootLocation(StringSE defaultPersistenceUnitRootLocation) ユニット固有の永続性単位根を決定できなかった場合に適用される、デフォルトの永続性単位根の場所を設定します。voidsetLoadTimeWeaver(LoadTimeWeaver loadTimeWeaver) JPA クラストランスフォーマ契約に従ってクラスインスツルメンテーションに使用する Spring LoadTimeWeaver を指定します。voidsetManagedClassNameFilter(ManagedClassNameFilter managedClassNameFilter) クラスパススキャンを使用して検出されたエンティティクラスに適用するようにManagedClassNameFilterを設定します。voidsetManagedTypes(PersistenceManagedTypes managedTypes) エンティティスキャンの代わりに管理対象の型のリストを作成するために使用するPersistenceManagedTypesを設定します。voidsetMappingResources(StringSE... mappingResources) デフォルトの永続性ユニットの 1 つ以上のマッピングリソース(persistence.xmlの<mapping-file>エントリに相当)を指定します。voidsetPackagesToScan(StringSE... packagesToScan) persistence.xmlマーカーを含む jar ファイルの JPA の標準スキャンを使用する代わりに、クラスパスのエンティティクラスに Spring ベースのスキャンを使用するかどうかを設定します。voidsetPersistenceUnitPostProcessors(PersistenceUnitPostProcessor... postProcessors) このマネージャーによって解析された各 PersistenceUnitInfo に適用される PersistenceUnitPostProcessors を設定します。voidsetPersistenceXmlLocation(StringSE persistenceXmlLocation) ロードするpersistence.xmlファイルの場所を指定します。voidsetPersistenceXmlLocations(StringSE... persistenceXmlLocations) ロードするpersistence.xmlファイルの複数の場所を指定します。voidsetResourceLoader(ResourceLoader resourceLoader) このオブジェクトが実行される ResourceLoader を設定します。voidsetSharedCacheMode(SharedCacheModeEE sharedCacheMode) このマネージャーのすべての永続ユニットに JPA 2.0 共有キャッシュモードを指定し、設定されている場合はpersistence.xmlの値をオーバーライドします。voidsetValidationMode(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-weaverXML タグを使用することを検討してください(デフォルトでは環境を自動検出します)。- 次で指定:
- インターフェース
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)