1

我的任务是创建从 xml 到 db 的转换器(Oracle 11)。

我有很多(大约 100 个)客户提供的 xsd。每个 xsd 都描述了非常复杂的数据。有些 xsd 有通用类型,但每个 xsd 都声明了里面的所有类型,所以没有通用类型的 xsd。

未提供 DB 模型。但是客户端拒绝了基于使用 oracle xmldb 的变体。

我的计划是:

  1. 使用 xmlspy 生成 db 模型;
  2. 使用 jaxb 生成 java 模型;
  3. 使用 hibernate 将 java 映射到 db 模型;
  4. 使用 jaxb 读取 xml 数据到 java 模型;
  5. 使用休眠存储数据。

但是当我尝试生成 db 模块时,我看到 xmlspy 生成了超过 5000 个表。即使我可以减少它们的数量,仍然有太多的工作来验证和修复表之间生成的关系。还有很多工作来生成 java 模型并将其映射到数据库。

有没有其他方法可以解决我的问题?

4

1 回答 1

0

如果不分析 XML 数据并将其映射到数据库中的关系数据模型,这是一项不可能完成的任务。

您概述的方法是一个相当机械的过程,它展示了自动化这个过程是多么困难......您的 XSD 中的每个 XSD 类型在 Java 中生成了一个唯一的对象类,然后通过休眠...

如果您的模式使用类型继承,这可能会为您提供有关关系数据结构的一些线索(继承公共父类型的 XSD 类型可能属于同一个表)。也许其他人可以提供其他常见的模式来提防。

更新

我建议仔细查看底层 XML 数据。

我记得以前的一个 Web 服务项目,我们根据收到的原始 XML 数据完全重写了客户的模式。事实证明,他们复杂的 XSD 类型完全是多余的,只是增加了复杂性。

于 2012-11-13T19:34:40.973 回答