繁体   English   中英

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

[英]migrating a hibernate class from a sequence based integer primary key to a GUID primary key while retaining the old keys for backward compatibility?

哪种策略适合将休眠类从基于序列的整数主键迁移到GUID主键,同时保留旧键以实现向后兼容?

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

我们正在努力过渡到GUID主键,但希望保留旧版应用程序的旧主键(包括旧内容和新创建的内容)。 虽然实现起来似乎很简单(将主键更改为GUID,添加一个拦截器以在新内容上填充内容ID),但我要注意哪些陷阱?

你确定你要这么做吗?

我了解需要GUID,但您是否真的希望它们成为数据库PK。 我所做的一些非正式测试表明,使用GUID PK进行连接/搜索与使用整数PK相比,大约有10-15%的命中。 我建议您对当前人口使用GUID进行一些测试,看看对性能有何影响。 最好只向表中添加唯一索引的GUID列,并保留PK不变。

愚蠢的错误,例如“我们知道PK是GUID,所以它的长度总是那么多”。

我想不出一个很好的解决方案,但是,

我将创建另一个字段来保存GUID,并为当前存在的所有记录自动生成ID,并从那里开始。 它会闻到一点味道,但是如果您问我,它比尝试将不兼容的类型存储在同一字段中要好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM