【发布时间】:2017-02-06 04:11:50
【问题描述】:
我有一个 API,它允许第三方通过代表我的 java 域的 XML 文件与我的数据库进行交互。
我使用 JAXB 来定义我的 POJO 和 XML 之间的 xsd 以及 marshal/un-marshal。
我面临的问题是如何支持相当于休眠的延迟加载。即仅在特定条件下递归地编组对象。我想到的条件类似于 RequestFactory 使用的 .with(...) ,用户可以在其中准确指定要返回的对象图的哪一部分。
考虑“Person”在另一个表中有“Image”的情况。当使用 API 并请求一个“人”时,我希望能够指定 .with(Image) 或等效的东西,否则每个用例都会受到惩罚,必须携带这个图像
(a) 不是必需的
(b) 有不必要的数据库命中。
我有 100 多个表,排列过于复杂,无法编写专门的 POJO。
如何使用 JAXB 或任何其他免费库来满足上述要求。
【问题讨论】:
-
为什么不使用继承。您可以创建 Person 对象,并且 PersonWithmage 扩展了 Person。虽然 Parent 没有要求,但 child 可能需要额外的字段。
-
如果只有 10 个左右的情况,我会这样做,但是满足任何可能的第三方要求的排列数量之多是无法管理的。
-
您可以通过一些反射来实现,实现一个 with() 方法(每个可序列化到 xml 对象使用的接口),该方法通过反射解析对象以匹配传递给 with() 的参数/映射最后通过映射返回给定对象的成员
-
如果我理解正确这意味着我将手动处理编组并且几乎取消 JAXB?我已经开始设计手动解决方案,但希望避免这种情况。
-
这听起来很有希望,尽管我怀疑它涉及每个案例的自定义编码......我会调查的。谢谢。