Spring FrameworkのLocalContainerEntityManagerFactoryBeanとLocalEntityManagerFactoryBeanの違いを誰かが説明できますか?
8 に答える
基本的に、 JPA 仕様では2 種類のエンティティ マネージャが定義されています。
i) アプリケーション管理:アプリケーション管理のエンティティ マネージャは、「エンティティ マネージャはアプリケーション (つまり、コード) だけで作成および管理される」ことを意味します。
ii) コンテナ管理:コンテナ管理エンティティ マネージャとは、「エンティティ マネージャが単に J2EE コンテナによって作成および管理されることを意味します (つまり、コードが直接管理するのではなく、エンティティ マネージャはコンテナによって作成および管理され、コードは次のような方法で EM を取得します)。 JNDI を使用)。
注 : 作成および管理 (上記) とは、「エンティティ マネージャーの開始、終了、およびトランザクションへの関与」を意味します。
LocalContainerEntityManagerFactoryBean - コンテナー管理
LocalEntityManagerFactoryBean - アプリケーション管理
大きな注意:スプリング ベースのアプリケーションの場合、違いはそれほど大きくありません。Spring は役割のみを果たします( LocalContainerEntityManagerFactoryBeanを構成する場合はコンテナーとして、 LocalEntityManagerFactoryBeanを構成する場合はアプリケーションとして)
ドキュメントはそれをすべて言います:
LocalContainerEntityManagerFactoryBean -- リンクから: JPA の標準コンテナーブートストラップ コントラクトに従って JPA EntityManagerFactory を作成する FactoryBean 。
LocalEntityManagerFactoryBean -- リンクから: JPA の標準スタンドアロンブートストラップ コントラクトに従って JPA EntityManagerFactory を作成する FactoryBean 。
基本的に、唯一の違いは JPA の作成方法EntityManagerFactory
です。
LocalEntityManagerFactoryBean
が最も単純で、最も制限されています。既存の JDBC DataSource Bean 定義を参照することはできず、グローバル トランザクションはサポートされていません。
LocalContainerEntityManagerFactoryBean
最も強力な JPA セットアップ オプションであり、アプリケーション内で柔軟なローカル構成を可能にします。既存の JDBC DataSource へのリンクをサポートし、ローカル トランザクションとグローバル トランザクションの両方をサポートします。
参照: spring-framework-reference.pdf 「Spring 3」
LocalEntityManagerFactoryBean は、アプリケーション管理の EntityManagerFactory を生成します。
LocalContainerEntityManagerFactoryBean は、コンテナー管理の EntityManagerFactory を生成します。
参照 : Spring In Action - Craig Walls