Java 将JPA对象转换为XML/JAXB
我想将数据从表转换为XML文件。数据采用以下格式Java 将JPA对象转换为XML/JAXB,java,xml,spring,hibernate,jaxb,Java,Xml,Spring,Hibernate,Jaxb,我想将数据从表转换为XML文件。数据采用以下格式 Continent Country County Town -------------------------------------------------------------- Africa Kenya South Mombasa Africa Egypt South Cairo Europe Eng
Continent Country County Town
--------------------------------------------------------------
Africa Kenya South Mombasa
Africa Egypt South Cairo
Europe England North Birmingham
Asia Japan South Tokyo
将生成的结果XML文档类似于下面所示的文档:
<continents>
<continent name="Africa">
<countries>
<country>
<countryName>Kenya</countryName>
<county>South</county>
<town>Mombasa</town>
</country>
<country>
<countryName>Egypt</countryName>
<county>South</county>
<town>Cairo</town>
</country>
</countries>
</continent>
<continent name="Europe">
<countries>
<country>
<countryName>England</countryName>
<county>North</county>
<town>Birminghan</town>
</country>
</countries>
</continent>
<continent name="Asia">
<countries>
<country>
<countryName>Japan</countryName>
<county>South</county>
<town>Tokyo</town>
</country>
</countries>
</continent>
</continents>
当我运行从数据库检索行的调用时,我将获得以下格式的列表:
List<Town> towns = entityManager.getAllTowns();
为了能够生成XML文件,我必须迭代列表并处理每个Town对象。我可以使用DOM,但我觉得将有很多for循环和if语句来生成XML文档。是否可以生成XML文档而不必遍历列表来构建上面所示的XML文件
我已经将一个JPA对象转换为Jaxb,但这是一个一对一映射的平面关系,即XML结构中没有子元素或内部元素。我不明白如何处理示例xml文件所需的子元素和条件规则
我在Spring3中使用JPA/Hibernate。是否可以生成示例xml文件,或者由于xml文件的格式,是否需要使用for循环和if语句手动生成
谢谢看一看。假设您有一个JPA实体类和一个JAXB类。Dozer是一个用于在两个这样的bean之间进行映射的框架。但是,您需要指定哪个属性应该映射到哪里。请查看。假设您有一个JPA实体类和一个JAXB类。Dozer是一个用于在两个这样的bean之间进行映射的框架。但是,您需要指定哪个属性应该映射到何处。我通常发现,从您正在做的事情中选择另一种方式比较容易。也就是说,使用XJC生成JAXB对象,然后使用orm.xml文件进行到数据库的JPA映射。您可以使用标准的XJC插件和JAXB配置文件定制生成的Java对象 这种方法的优点是只维护一组Java类,可能还有JAXB模型的一些补充子类,而且它还倾向于促进更稳定的XML契约
出于某种原因,人们倾向于轻视使用单独的XML文件进行ORM。不过,在某些情况下,这是有道理的,我相信这就是其中之一。我通常发现,从你正在做的事情中走另一条路比较容易。也就是说,使用XJC生成JAXB对象,然后使用orm.xml文件进行到数据库的JPA映射。您可以使用标准的XJC插件和JAXB配置文件定制生成的Java对象 这种方法的优点是只维护一组Java类,可能还有JAXB模型的一些补充子类,而且它还倾向于促进更稳定的XML契约 出于某种原因,人们倾向于轻视使用单独的XML文件进行ORM。不过,在某些情况下,它是有意义的,我相信这就是其中之一。所示的解决方案可能有用。所示的解决方案可能有用。
List<Town> towns = entityManager.getAllTowns();