使用 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 类开始
- 您还可以从 JPA 实体开始并将它们映射到您的 XML 模式。
- MOXy 提供了一个基于 XPath 的映射扩展,可以简化此映射:http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
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/