1

Hibernate 4.0 から eclipse リンクへの移行を計画しています。JPA プロバイダーは、誰かがその道をたどった場合にどのような労力が必要になるかを教えてくれるからです。

マルチテナンシーがEclipseリンクに優れているため、私は熱心です

4

2 に答える 2

1

遅い回答ですが、質問は他の人に関連している可能性があり、回答は見た目よりも複雑になる可能性があると思います。

100% 標準的な JPA の使用のみを考慮します。決定的な違いがいくつかあります。例えば:

  • デフォルトでは、Hibernate はキャッシュしません。EclipseLink は、デフォルトで大量にキャッシュします。キャッシュを移行する方法の両方のドキュメントを確認する必要があります。
  • Hibernate はデフォルトで Java SE 環境でもクラスを検索 (スキャン) できますが、EclipseLink はこれを行いません。どちらも指定どおりに EE 環境で実行します。
  • 両方のプロバイダーにバグがあり、100% JPA であっても、マッピングの複雑さ、JPQL の使用の有無と使用方法などに応じて、定期的にヒットする可能性があります。私たちの実践の例:
    • Hibernate は、次のような結合にまたがる削除に対して正しい SQL を生成しません: delete from Dog d where d.breed.name = 'collie'(リンク)
    • または、むしろエキゾチックな EclipseLink の@OneToMany@Idプロパティを参照するエンティティの削除 ( link )
    • 別の例として、現在は修正されていますが、EclipseLink の遅延リストでの Java 8 ストリームの問題もありましたVector

両方のプロジェクトで未解決のバグの数を考慮すると (それ自体がおそらく予想されます)、移行を行ったり来たりしようとすると、バグのクロスファイアが発生する可能性があります。

まとめると、次のようになります。

  • JPA仕様が具体的ではないJPAプロバイダーの仕様に注意してください(プロバイダーには多くの未指定の動作が残っています)。暗黙的なキャッシュ設定はその一例です。プロバイダーなどに適切なプロパティを使用するには、JPA プロバイダーのドキュメントを読む必要があります。
  • バグに注意してください。:-)
于 2016-02-19T07:50:49.567 に答える
0

簡潔な答え。場合によります。

長い答え。100% 標準の JPA を使用する場合は簡単かもしれませんが、Hibernate API を直接使用する場合はすべてを書き直す必要があるかもしれません。

最良の答え。これは些細なことではありませんが、JPA を使用している場合は、法外な時間のコミットメントではありません。

于 2013-04-19T16:18:05.927 に答える