使用基于XML的建模在应用程序中管理数据库模式的策略

时间:2012-02-08 11:53:30

标签: java mysql xml hibernate

我正在处理的应用程序目前使用MySQL数据库。我们计划更改应用程序的体系结构以处理XML格式的数据。因此,应用程序的对象模型将由XML模式驱动。现在我们可以使用JAXB等工具进行XML解析并在内存中创建对象结构。 然而,我看到的主要问题是: -

  1. 如何将对象结构映射到关系数据库。我们可以在这里使用Hibernate。
  2. 另一个问题是XML架构会定期更改,我们需要支持以前版本的架构。
  3. 我不确定处理第2项的最佳方法,因为随着模式版本数量的增加,数据库模式很容易开始变得臃肿很多。

    所以我的主要问题是,从对象建模角度和数据库架构角度来看,管理此类版本更改的最佳策略是什么?

2 个答案:

答案 0 :(得分:0)

解决方案是:

继续丰富您的架构,但要确保它与以前的架构向后兼容,以便JAXB可以解析并将最旧和最新的基于架构的XML映射到您的对象中。这意味着对具有相同目标的数据库模式进行更改,以使模式与要映射的旧实体兼容;对于JAXB的所有版本,模式命名空间等应该是相同的。我想你会有很多可以为空的专栏等等。这对未来有风险,但如果做得好可能会有效。

哦,现在我看到你编辑了你的评论并给了我更多信息,所以:

由于架构不断变化,我建议跳过JAXB。 JAXB不是为这种不断变化而制造的。 Smooks(在Eclipse中安装JBoss Tools插件)是。它允许您为Hibernate实体类的每个不同版本的基于模式的XML定义不同的映射定义。因此,通过这种方式,您将维护Smooks映射,Hibernate实体类和数据库模式。关于数据库模式,有一些方法可以让它在没有结构变化的情况下进化,但你必须牺牲参照完整性...我不会

我想你的问题有很多解决方案

答案 1 :(得分:0)

XML模式的不断发展的本质意味着使用JAXB是不可伸缩的,因为它意味着每次模式更改时静态生成一批新类。系统必须支持所有先前版本的架构。

我决定使用XSOM来解析XML架构。这意味着可以在运行时动态选择和处理正确的模式版本。因此,我们可以构建一种解析模式和实例化适当类的通用方法。