8

私が使用している最新かつ最高のAFAIKはJPA2.0です。

GAEにappengine-java-sdk-1.6.5/lib / user / orm/geronimo-jpa_3.0_spec-1.1.1.jarという名前のjarがあることに戸惑っています。私は、GAEには、最新の最高の最先端プロトコルとの互換性を採用するのに常に待ち時間があるという印象を持っています。JPA2.0を採用するのに少し時間がかかりました。

そのJPA3.0jarはGAESDKライブラリ内で何をしていますか?JPA 3.0のようなバージョンはありますか?今回、Googleは、他の誰よりも先に新しいバージョンのプロトコルを実装することで、私たちを一段と高めていますか?参照できる場所にJPA3.0の仕様またはリファレンスimplはありますか?

私は(現在)EJBの人ではありません(10年前にEJB 1.0で悪い経験をしたので、申し訳ありませんが... EJBを避けることにしました)。

  • EJB3.0はJPA2.0と同義ですか。
  • または、JPA2.0がEJB3.0のサブセットとして採用されていますか
  • またはJPA3.0= EJB 3.0ですか?

私が尋ねたこの質問のWRT:Hibernate entitymanager 3.6.9から4.1.2に移行するとmysql接続がクラッシュしました、Hibernate entity-manager4.xは何らかの形でJPA3.0または少なくとも2.0以降のJPAバージョンに関連していますか?Hibernateエンティティマネージャー3.xと4.xの間に大きな違いがあります(これまでのところ、4.xのデプロイを避けてきました)。

この質問はかなり紛らわしいので、各項目を個別の質問として尋ねるべきだったかもしれませんが、誰かがこれらすべてを1つの論文にまとめることができることを望んでいます:ejb 3、JPA 2/3、geronimo、休止状態のent-mgr3/4。ありがとう。

4

3 に答える 3

7

いいえ(2012年6月)JPA3のようなものはありません。JPA1、JPA2、および(計画中の)JPA2.1があります。そのgeronimo-specsjarは実際にはJPA1用ですが、非常に近視眼的な人/グループがそのように名前を付けることにし、現在その結果を確認しています。

あなたが言うように、GAEはすでにJPA2をサポートしており、Mavenリポジトリまたはここhttp://code.google.com/p/datanucleus-appengine/から入手可能なJPAプラグインのv2.xを使用 し、互換性のあるjpa-apiv2で動作しますjar(geronimo-jpa_2.0_specなど)。

于 2012-06-06T06:55:26.173 に答える
7

他の人が言っているように、JPA 2.0は現在のバージョン(Java EE 6の一部)であり、次のバージョンは現在仕様に含まれているJPA 2.1(JSR 338)であり、JavaEE7に含まれる予定です。現時点ではJPA3であるため、JARの名前は正しくありません。

JPA1.0はJavaEE5の一部として導入され、永続性の部分をEJB仕様から分割しました(したがって、Java EE5はEJB3.0とJPA1.0を導入しましたが、エンティティBeanはもうありません!)。その後、JavaEE6にはEJB3.1とJPA2.0が含まれていました。

Java EE 7には、EJB3.2とJPA2.1が含まれます。

于 2012-06-06T07:37:32.403 に答える
1

私が最後にJPAを真剣に扱ってから状況が変わった可能性があるため、ここでは訂正の下で話しています。ただし、私の理解ではJPA2が現在の仕様です。あなたが言及したjarファイルがJPA2仕様ではないかと思います。2011年、Geronimoはその時点でJPA2をサポートしていませんでした。

EJBとJPAに関する限り:

  1. EJBとJPAはどちらも、POJO(Plain Old Java Objects)に基づいています。
  2. JPAクラスは、基本的にデータアクセス層テクノロジーです。つまり、データ層との対話に使用されます。
  3. EJBは、基本的にビジネス層に使用されます。これには、ビジネスロジックが含まれ、異なるJPAクラス間の相互作用を調整します。たとえば、JPAには、Customerクラス(Customerテーブルと相互作用する)とOrdersクラス(Ordersテーブルと相互作用する)がある場合があります。EJBでは、これら両方のクラスを使用して、特定の顧客の新しい注文を作成します。

JPAをテクノロジーとして使用すると、データベースアクセス機能を1つのレイヤーに維持できます。このレイヤーは、EJB、Webアプリケーション(サーブレット、JSP、JSF)、Webサービス、さらにはSwingアプリケーションで使用できます。これにより、これらすべてのアプリケーションでデータベースアクセスロジックの一貫性が保たれます。データベースを変更するには、JPAを変更する必要があります。

これは違いの非常に単純化された説明であり、この主題は本当に深いですが、これらのポイントは、2つを区別するのに役立つはずです。

ちなみに、新しいEJB仕様により、Beanの使用、開発、およびデプロイが非常に簡単になります。何年も前に元の仕様を見逃してしまったのは幸運です。現在、それらは非常に使いやすいです。

これが霧を少し取り除くのに役立つことを願っています。

于 2012-06-06T07:26:16.323 に答える