序列化/反序列化JPA实体的最可靠方法是什么?

时间:2013-03-03 10:58:06

标签: xml json jpa serialization binary

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

  1. 实体具有双向关系(循环图),集合,数组和嵌入键。

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

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

  4. 有关如何处理此问题的建议以及用于最低风险解决方案的库?似乎有很多选项XStream,JAXB,Java序列化,Json,XMLEncoder等......我有点困惑。

2 个答案:

答案 0 :(得分:1)

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

通常,使用另一个DTO层进行实体序列化是一种很好的做法。这样,您可以减少关系中的循环,并进一步自定义对象以进行序列化。您可以手动在这些图层之间进行映射,也可以使用Dozer之类的工具。

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

答案 1 :(得分: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提供程序。