【问题标题】:What is the most reliable approach to serialize / deserialize JPA entities?序列化/反序列化 JPA 实体的最可靠方法是什么?
【发布时间】:2013-03-03 10:58:06
【问题描述】:

我必须将分离的 JPA 实体从服务器发送到客户端,但它没有返回, 但是客户端应该能够可靠地实例化这些实体。

  1. 实体中有双向关系(循环图)、集合、数组和可嵌入的键。

  2. 我可以控制服务器和客户端 - 即我可以在客户端和服务器中使用相同版本的实体类,并且序列化的数据将非常短暂。

  3. 这将用于关键操作,我必须确保客户端能够毫无问题地反序列化。无风险——不惜一切代价。反序列化的可靠性比效率/速度/大小更重要

关于如何解决这个问题以及使用什么库来实现最低风险的解决方案有什么建议吗? XStream、JAXB、Java 序列化、Json、XMLEncoder 等选项似乎太多了……我有点糊涂了。

【问题讨论】:

    标签: xml json jpa serialization binary


    【解决方案1】:

    注意:我是EclipseLink JAXB (MOXy) 的负责人,也是JAXB (JSR-222) 专家组的成员。

    EclipseLink MOXy 是 JAXB (JSR-222) 规范的实现。由于 EclipseLink 还提供了JPA implementation,它的许多扩展都旨在映射 JPA 实体:

    由于您的问题也被标记为 ,您可能有兴趣知道 MOXy 还使用 JAXB 元数据提供 JSON 绑定:

    说到可靠性 MOXy 目前是 WebLogic 12.1.1 中的默认 JAXB 提供程序。

    【讨论】:

    • 我已将 JAXB 合并到 JPA 实体中,并将​​ MOXy 编组器用于 JSON。像魔术一样工作。谢谢
    【解决方案2】:

    我有使用 JAXB 对 JPA 实体类进行 XML 序列化的良好经验。在基于 Web 服务的客户端-服务器通信的许多关键项目中得到证明。

    通常最好使用另一个 DTO 层来序列化实体。通过这种方式,您可以缩短关系周期并进一步自定义您的对象以进行序列化。您可以手动在这些层之间进行映射,或使用Dozer 之类的工具。

    通常它只涉及创建具有少量 JAXB 注释(@XmlType 等)的相应 POJO,以及这些 POJO DTO 和 JPA 实体之间的一些映射。

    【讨论】:

    • 感谢使用 JAXB 很容易,现在我可以获取 XML,或者根据参数获取 MOXy 来生成 JSON。
    猜你喜欢
    • 2014-01-20
    • 2023-03-30
    • 2021-10-24
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多