数据模型演变

时间:2010-06-06 04:43:22

标签: java data-modeling

编写代码时,我看到了更改数据模型的要求(例如,从类中添加/更改/删除数据成员)。当这些数据模型属于某个接口时,在不破坏现有客户端代码的情况下似乎很难进行更改。所以我想知道是否有任何最佳实践来设计接口/数据模型,以尽量减少进化过程中的影响。

我能从谷歌找到的最接近的东西是数据合约版本控制。但这似乎是.net特定主题。我想知道相同的做法是否适用于Java世界,或者有一种不同的或通用的方式来处理数据模型的演变。

由于

2 个答案:

答案 0 :(得分:1)

在Java或数据建模领域,没有简单的答案。

  • 某些更改向上兼容;例如添加新方法,可选字段,子类等。
  • 某些更改不兼容,但可以使用简单的转换处理;例如添加强制字段可以通过添加额外构造函数参数的转换来支持。
  • 一些变化不可避免地需要主要的程序员干预。

另一点值得注意的是,当与数据模型相对应的数据是持久的时,问题会变得更加困难,并且在数据模型更改时不会丢弃。这被称为“模式演变”问题,我相信已经证明没有通用解决方案。

答案 1 :(得分:1)

有些工具可以提供帮助,请查看LiquiBase

本文对developerworks

进行了很好的概述