将JAXB映射到数据库表的最佳方法

13

我有一个入站的XML文件,我正在使用xjc工具将其映射到JAXB对象(用于构建POJOs)。

我想知道将这些对象映射到各种表的最佳方法是什么。

一个对象/ XML可以映射到多个表,这使得Hibernate规则失效。作为一种基本解决方案,我认为我需要以某种方式注释对象中的字段,可能是通过XSD中的标记来指定数据库列名。

有人遇到过这种情况吗?

谢谢

5个回答

10
我猜你需要 Hyperjaxb3,它为JAXB对象提供关系持久性。 @lexicore 是这个项目的作者。

1
我认为这个项目已经不再维护了。 - Mike Stoddart

3
您可以使用一个名为 xjc 的扩展程序 - hyperjaxb
  • hyperjaxb2 - 使用JAXB和Hibernate进行XML数据的关系持久化。
  • hyperjaxb3 - 用于JAXB对象的持久层。

为此,hyperjaxb3 更为合适。

以下是一些教程链接:使用Maven从XSD模式文件生成JPA Java类


2
这段文字涉及IT技术,需要翻译成中文。具体内容如下:

数据库模式和XML模式之间的一致性不清楚。 如果泛化程度过低且它们之间缺乏协调,那么情况就很糟糕,您需要为每个JAXB实体手动耦合XML和数据库。

如果有足够好的协调和可理解的规则,您可以尝试编写自己的代码生成器来创建带有JAXB和JPA注释的实体代码。

此外,还可以尝试查看支持JAXB和JPA注释的引擎: EclipseLink


2
如果您有复杂的对象,那么无模式数据库将大大简化开发和处理时间。
从我的经验来看:有数百万个XML文件,其中包含200-300个不同的属性,嵌套在几个级别中。
花费了几天的时间创建JAXB + JPA持久化实体。插入速度约为每秒50个对象,分割为20-40个表格。
MongoDB的速度约为每秒1000个对象。而且没有开发工作量。 只需读取xml,例如使用org.json将其转换为JSON,然后将json转换为BSON并插入即可。
性能分析显示,两个转换只花费很少的时间(几个百分点)。大部分时间都是用于保存到数据库中(比Oracle RDBMS快20-40倍)。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接