1

分離された JPA エンティティをサーバーからクライアントに送信する必要がありますが、返されませんが、クライアントはこれらのエンティティを確実にインスタンス化できるはずです。

  1. エンティティには、双方向の関係 (巡回グラフ)、コレクション、配列、および埋め込み可能なキーがあります。

  2. サーバーとクライアントの両方を制御できます。つまり、クライアントとサーバーで同じバージョンのエンティティ クラスを使用でき、シリアル化されたデータの寿命は非常に短くなります。

  3. これは、クライアントが問題なく逆シリアル化できるようにする必要がある重要な操作に使用されます。リスクフリー - どんな犠牲を払っても。逆シリアル化の信頼性は、効率/速度/サイズよりも重要です

これにアプローチする方法と、リスクを最小限に抑えるソリューションに使用するライブラリに関する推奨事項はありますか? XStream、JAXB、Javaシリアライゼーション、Json、XMLEncoderなど、非常に多くのオプションがあるようです...少し混乱しています。

4

2 に答える 2

1

注: 私はEclipseLink JAXB (MOXy)のリーダーであり、JAXB (JSR-222)エキスパート グループのメンバーです。

EclipseLink MOXyは、JAXB (JSR-222) 仕様の実装です。EclipseLinkもJPA実装を提供するため、その拡張機能の多くはJPAエンティティのマッピングを目的としています:

あなたの質問にはもタグ付けされているので、MOXy は JAXB メタデータを使用して JSON バインディングも提供することに興味があるかもしれません。

信頼性について言えば、MOXy は現在、WebLogic 12.1.1 のデフォルトの JAXB プロバイダです。

于 2013-03-04T16:59:34.860 に答える
1

JPA エンティティークラスの XML シリアライゼーションに JAXB を使用した経験があります。Web サービスに基づくクライアント サーバー通信の多くの重要なプロジェクトで実証されています。

通常、エンティティのシリアル化には別の DTO レイヤーを使用することをお勧めします。このようにして、関係のサイクルを切り取り、シリアル化のためにオブジェクトをさらにカスタマイズできます。これらのレイヤー間を手動でマッピングするか、Dozerなどのツールを使用できます。

通常は、JAXB アノテーション (@XmlType など) がほとんどない対応する POJO の作成と、これらの POJO DTO と JPA エンティティ間のマッピングのみが含まれます。

于 2013-03-03T14:14:00.520 に答える