代码之家  ›  专栏  ›  技术社区  ›  Jherico

将休眠类从基于序列的整数主键迁移到guid主键,同时保留旧键以实现向后兼容性?

  •  1
  • Jherico  · 技术社区  · 16 年前

    什么策略对于将Hibernate类从基于序列的整数主键迁移到guid主键有好处,同时保留旧的键以实现向后兼容性?

    我们有一个广泛的类层次结构(使用联接的子类模型),其中基类有一个从数据库中的序列生成的长主键。

    我们正在努力转换为guid主键,但希望保留旧的主键(在旧的和新创建的内容中)用于旧的应用程序。虽然实现看起来相当简单(将主键更改为guid,添加一个拦截器来填充新内容的内容ID),但我应该注意哪些陷阱?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Spencer Ruport    16 年前

    我想不出一个很好的解决办法,但是,

    我将创建另一个字段来保存guid,并为当前存在的任何记录自动生成id,然后从那里开始。它闻起来有点味道,但是如果你问我,它比在同一个字段中存储不兼容的类型要好。

        2
  •  1
  •   AngerClown    16 年前

    你确定要这样做吗?

    我知道需要guid,但您真的希望它们是您的数据库pk吗?我做的一些非正式测试表明,使用guid pk进行连接/搜索比使用整数pk有10-15%的命中率。我建议您在当前的人群中试用一些带有guid的测试,看看性能会有什么影响。最好只向表中添加一个唯一索引的guid列,并保持pk不变。

        3
  •  0
  •   Vladimir Dyuzhev    16 年前

    愚蠢的错误,比如“我们知道pk是guid,所以它的长度总是那么多”…