Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:XML转换成数据库,最简单的方法是什么?_Java_Xml_Hibernate_Spring - Fatal编程技术网

Java:XML转换成数据库,最简单的方法是什么?

Java:XML转换成数据库,最简单的方法是什么?,java,xml,hibernate,spring,Java,Xml,Hibernate,Spring,我有一堆XML文件和一个XSD 我想简单地将它们转换成POJO,并将它们插入到数据库中。 DB模式在我的控制之下,所以它可以是我喜欢的任何东西 我查看了大量的API,但想了解另一个最有效的方法 JAXB XMlBeans XPATH到DBUnit hibernate是否有一些api从XSD创建POJO,然后将XML读入这些POJO,然后将数据插入数据库 或者spring是否有任何功能可以帮助实现这一点 我想我只是想听听你的观点,以防万一我错过了一个API,它可以帮助我做我想做的事情 谢谢 J

我有一堆XML文件和一个XSD

我想简单地将它们转换成POJO,并将它们插入到数据库中。 DB模式在我的控制之下,所以它可以是我喜欢的任何东西

我查看了大量的API,但想了解另一个最有效的方法

  • JAXB
  • XMlBeans
  • XPATH到DBUnit
hibernate是否有一些api从XSD创建POJO,然后将XML读入这些POJO,然后将数据插入数据库

或者spring是否有任何功能可以帮助实现这一点

我想我只是想听听你的观点,以防万一我错过了一个API,它可以帮助我做我想做的事情

谢谢
Jeff Porter

一种常见的方法是使用JPA(即Hibernate)将对象存储到数据库中,使用JAXB(即Metro,(我是技术负责人)或JaxMe)将对象转换为XML

EclipseLink JAXB(MOXy)有许多扩展用于将JPA实体映射到XML:


或者您可以绕过转换为POJO的步骤,直接将XML存储为CLOB。稍后它将允许“duck-typing”,您可能会发现这很有优势


如果以后需要单独查询这些对象,那么映射到JavaPOJO是有意义的。如果您始终需要整个流,而不必查询XML中的值(例如XPath),那么我认为将XML存储为CLOB更有意义。

快速回答:JAXB、JPA和Spring

当将XML插入数据库时,需要考虑对XML表示的数据所要执行的操作。 例如,您可以将XML视为输入数据,然后创建一个以易于查询的方式保存数据的架构。如果您希望这样做,那么就使用JAXB作为解组器,因为您可以通过xjc工具从XSD轻松生成带有适当注释的POJO/实体。再添加一点JPA注释,您就有了一个快速的解决方案,可以将XML映射到一个完整的模式,该模式允许各种混合匹配查询和备选视图。当然,JAXB注释可用于生成多种输出格式(XML、JSON、YAML等),因此在输出这些数据时,您不局限于XML

下一步,您可以将XML视为您希望存储的完整实体。在这种情况下,您希望将其存储为CLOB或XML(在Oracle中)。基于XPath的搜索,因此您有机会查询结果数据集

最后,如果您认为XML过于臃肿,并且您可以控制对POJO的任何结果更改,那么您可以将未编组的POJO作为BLOB直接序列化到数据库中。您将拥有一个相当紧凑的模式和数据库,但在查询时会遇到麻烦,因为它都是二进制的。如果必须基于旧POJO对非常旧的数据集进行反序列化,则稍后会出现二进制版本兼容性问题


总之,JAXB是处理解组和后续编组过程的一种非常好的方法。它的快速和简单(这里点头)非常好的支持,所以一件事。JPA是执行数据库操作的首选技术。Hibernate是JPA的一个实现者(具有良好的扩展),Spring通过HibernateTemplate漂亮地支持它。同样,您可以使用Spring的JpaTemplate,它的学习曲线可能稍浅一些。

您可以选择您的数据库吗?如果是这样,你可以考虑存在DB,这是一个流行的开源XML数据库。+ 1:我会这样做,加上提取选定的字段,并将它们存储为额外的索引列,以便以后我可以进行高速查找。当然,要提取的正确字段将取决于需要的查询类型。