【问题标题】:How to implement a roundtrip from XML Schema using Java with a Database如何使用带有数据库的 Java 实现 XML Schema 的往返
【发布时间】:2011-03-01 07:44:37
【问题描述】:

实现往返接收 XML 文件并最终使用 Java 将数据持久保存到数据库中的最佳方法是什么。目前我有:
1. 发送给我的 XML Schema & XML 数据文件
- XSD 相当复杂,属于外部方,所以我无法更改它
2. 创建 Java 类
- JAXB 生成超过 150 个类,不幸的是架构可以更改
- 我已经使用 Maven POM 来自动化这个过程 3. 将 XML 数据文件解组为 Java 对象(带有 JAXB 注释)
- 数据将显示给用户进行操作
4. 将 Java 对象持久化到 RDBMS (Oracle / MySQL)
- 似乎 JDO 是最合适的解决方案
5. 导出数据
- 数据可以再次导出为 XML 或 Excel(例如)

我找不到合适的方法来将 JDO 元数据或注释添加到 Java 源代码(在 JAXB 过程中生成)以确保我可以持久化 Java 类。我正在使用以下技术:
- Java、Maven、JAXB、JDO 和 JDBC

我认为 DataNucleus 最适合我,因为我可能必须经常在具有不同导出目的地的环境之间更改数据存储(RDBMS / XML / Excel)。我可能需要考虑的另外两种技术是:
- Spring 和 XDoclet

建议或指向教程的指针将不胜感激

【问题讨论】:

    标签: java maven jaxb jdo datanucleus


    【解决方案1】:

    实施的最佳方式是什么 往返接收 XML 文件和 最终将数据持久化到 使用 Java 的数据库。

    为此,我将使用 JAXB 和 JAXB 的组合。注:本人领队EclipseLink JAXB (MOXy)EclipseLink也提供优秀的JPA implementation

    目前我有:

    1 - 发送给我的 XML 模式和 XML 数据文件

    • XSD 相当复杂,属于外部方,所以我可以 不要改变它

    选项 #1 - 从 XML 架构开始

    • 如果您想从 XML 架构开始,您可以使用 JAXB 的外部绑定文件根据需要自定义类生成,而无需修改第三方 XML 架构。

    选项 #2 - 从 Java 类开始

    2 - 创建 Java 类

    • JAXB 生成超过 150 个类,不幸的是架构可以更改
    • 我已经使用 Maven POM 来自动化这个过程

    如果 XML 架构发生更改,您始终可以重新生成模型,或根据需要对模型进行注释以处理对 XML 架构的修改。

    您可能会发现HyperJAXB 项目很有用,因为我相信它会在 JAXB 模型上生成 JPA 注释。

    3 - 解组 XML 数据 文件转换成 Java 对象(使用 JAXB 注释)

    • 数据将显示给用户进行操作

    这只是普通的 JAXB 用法。示例见:

    4 - 将 Java 对象持久化到一个 关系型数据库(Oracle / MySQL)

    • 看来 JDO 是最合适的解决方案

    JPA 是另一种选择。

    5 - 导出数据

    • 数据可以再次导出为 XML 或 Excel(例如)

    这也是获取 XML 输出的正常 JAXB 用法。

    【讨论】:

      【解决方案2】:

      在数据库中存储由 JAXB 从不断发展的 XML 模式生成的 Java 对象的实例没有多大意义,恕我直言。关系数据库的目标是将数据存储在定义良好的关系结构中,以便能够轻松查询。

      如果您只想取回您之前收到的 XML 文档,只需将其作为 clob 存储在某个表或文件系统中。

      如果确实需要以结构化的方式将数据存储在数据库中,那么首先设计您的数据库架构,然后设计映射此数据库架构所需的 JDO 类,并实现将您的 JAXB 对象转换为 JDO 对象所需的业务逻辑以便将它们存储在数据库中。

      但在考虑您想要使用的技术之前,我会更多地考虑您想要实现的功能。

      【讨论】:

      • 不能再同意了,但我没有保存 XML clob 的选项。 XML Schema (XSD) 可能会改变,希望在 2 年内改变一次。 JAXB 生成的类(来自 XSD)形成了基本的数据关系/结构,因此需要自动化 ORM 过程(可能使用 JDO),而不需要手动注释 150 多个类,为每个类添加 @Persistent,或创建 persistence.xml(或类似)元数据。我希望 DataNucleus Enhance 或 Spring Injection 可以帮助我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多