4

多くのアプリケーションサーバーに移植できる必要がある100%JPA2準拠のアプリケーションがあります。(理論的には)JPAに準拠しているということは、構成を介して(たとえば、ソースコードを変更せずに)JPAプロバイダーを切り替えることができることを意味します-(右???)。

サーブレットコンテナ(Tomcat、Jettyなど)内で実行する場合、アプリケーションはHibernateで実行するように構成されます。成熟度とパフォーマンスのために、TopLinkやEclipselinkよりもHibernateを選択します。これまでのところ、これは機能します。

ただし、Java EEアプリケーションサーバー内で実行する場合、デフォルトでJPAプロバイダーを使用する必要がありますか、それともHibernateを使用する必要がありますか?

JBoss内では、プロバイダーがHibernateであることを知っているので、おそらく問題ではありません。ただし、WebLogic内のプロバイダーはEclipselinkだと思います。WebSphereまたはGlassfishのプロバイダーが何を使用しているかはわかりませんが、これらのアプリケーションサーバー内でプロバイダーとしてHibernateを使用する方法の詳細な手順を見てきました。

質問をする別の方法は、これらのアプリケーションサーバーでHibernateを使用することで何が欠けているかということだと思います。

4

2 に答える 2

4

多くのアプリケーションサーバーに移植できる必要がある100%JPA2準拠のアプリケーションがあります。JPAに準拠している(...)とは、構成を介してJPAプロバイダーを切り替えることができることを意味します(...)

はい。

(...)ただし、Java EEアプリケーションサーバー内で実行する場合、デフォルトでJPAプロバイダーを使用する必要がありますか、それともHibernateを使用する必要がありますか?

そうですね、Java EE 6サーバーにデプロイする場合、これは実際には問題ではありません。誰がアプリケーションを実行するのかは明確ではなく、推奨事項を作成することもできますが、実行時間は実際には「ビジネスではありません」:)また、デフォルトのプロバイダーを使用しない場合(これが重要な場合)、サポートの恩恵を受けられない可能性があることに注意してください。 )。

JBoss内では、プロバイダーがHibernateであることを知っているので、おそらく問題ではありません。ただし、WebLogic内のプロバイダーはEclipselinkだと思います。WebSphereまたはGlassfishのプロバイダーが何を使用しているかはわかりませんが、これらのアプリケーションサーバー内でプロバイダーとしてHibernateを使用する方法の詳細な手順を見てきました。

まず、JPA2.0はJavaEE 6の一部であり、GlassFishv3は現時点で唯一のJavaEE6コンテナーであることに注意してください。WebLogicとWebSphereはJavaEE5サーバーであり、JPA2.0をサポートしていない可能性があります。

ここで、デフォルトのプロバイダーについて:

  • GlassFishv3はデフォルトプロバイダーとしてEclipseLink2.0を使用しますが、Hibernate 3.5を使用するように構成できます(アドオンを介して)。

  • Weblogic 10.3.2では、デフォルトのJPAプロバイダーはOpenJPA / Kodoであり、EclipseLink1.2はWLSモジュールとして使用できます。WLS 10.3.3(まだリリースされていません)では、EclipseLink 2.0はWLSモジュールとして使用可能になり、デフォルトは引き続きOpenJPA/Kodoです。ただし、コンテナJPAAPIは引き続きJPA1.0になります。アプリケーション内にJPA2.0プロバイダーをパッケージ化することは可能のようです。このスレッドこのページを参照してください。しかし、これは公式にはサポートされておらず、Hibernate3.5でこれと同じことを行うのは別の話かもしれません。

  • WebSphere 6および7では、デフォルトのプロバイダーはOpenJPAです。このリンクは、デフォルトのプロバイダーを変更する方法(およびその結果)に関する詳細を提供します。しかし、それ以上は言えません。

質問をする別の方法は、これらのアプリケーションサーバーでHibernateを使用することで何が欠けているかということだと思います。

前述したように、これはベンダーによってサポートされていない可能性があります。さらに、移植性を最大化し、近い将来にアプリケーションをデプロイすることを計画している場合、JPA 2.0を採用することは賢明な選択ではないかもしれません(または、必要に応じて楽観的すぎます)。

于 2010-06-08T19:43:59.630 に答える
2

JPAコードで実装固有のAPIを使用していない限り、何が欠けているのかわかりません。import org.hibernateつまり、JPAコードのどこにもありませんが、JPAAPIに対して書き込むだけです。

于 2010-06-08T14:58:33.623 に答える