java - 如何使用带有数据库的 Java 从 XML 模式实现往返

标签 java maven jaxb jdo datanucleus

使用 Java 实现接收 XML 文件并最终将数据持久保存到数据库中的往返的最佳方法是什么。目前我有:
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

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

最佳答案

What is the best way of implementing a roundtrip for receiving XML files and eventually persisting the data into a database using Java.

为此,我将结合使用 JAXB 和 JAXB。注:我领EclipseLink JAXB (MOXy) , EclipseLink还提供了优秀的JPA implementation .

Currently I have:

1 - An XML Schema & XML data files send to me

  • the XSD is fairly complex and belongs to an external party, so I can not change it

选项 #1 - 从 XML 模式开始

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

选项 #2 - 从 Java 类开始

2 - Created the Java classes

  • JAXB generates over 150 classes, unfortunately the schema can change
  • I have used Maven POM to automate the process

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

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

3 - Unmarshall the XML data files into Java objects (with JAXB annotation)

  • the data would be displayed to the user to be manipulated

这只是普通的 JAXB 用法。有关示例,请参见:

4 - Persist the Java objects into a RDBMS (Oracle / MySQL)

  • it seems JDO is the most suitable solution

JPA 是另一种选择。

5 - Exporting the data

  • The data can be exported again as XML or Excel (for example)

同样,这是获取 XML 输出的正常 JAXB 用法。

关于java - 如何使用带有数据库的 Java 从 XML 模式实现往返,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5151729/

相关文章:

java - 如何更改 JVM 默认堆设置

xsd - 创建一个通用的 xsd 生成的类以供其他包使用

java - NoSuchDefinitionException : No matching bean of type

java - 使用注释插件 + JAXB 在 java 'field' 中插入自定义注释(基于 xsd -> java)

java - JAXB :Class cast exception while trying to unmarshall XML using JAXB

java - 如何使用 IP 过滤器保护 Orbeon Form Runner 的安全?

java - Android HttpGet 请求未发送

java - 通过字段 'springSecurityFilterChain' 表示的不满足的依赖关系

maven - 使用 Maven 包含 JAXB

java - 如何绕过 Maven 中的编译?