2009-06-02 47 views
1

什麼策略可以將基於序列的整數主鍵中的hibernate類遷移到GUID主鍵,同時保留舊鍵以實現向後兼容性?將hibernate類從基於序列的整數主鍵遷移到GUID主鍵,同時保留舊鍵以實現向後兼容性?

我們有一個廣泛的類層次結構(使用聯接子類模型),其中基類具有從數據庫中的序列生成的長主鍵。

我們正在過渡到一個GUID主鍵,但希望保留舊的主鍵(無論是在舊的和新創建的內容)的遺留應用程序。雖然實現看起來相當簡單(將主鍵更改爲GUID,添加一個攔截器以在新內容上填充內容ID),但是我想注意哪些缺陷?

回答

0

我想不出一個漂亮的解決方案,但是,

我會創造另一個領域持有GUID並自動生成當前存在並且從那裏開始的任何記錄的ID。它會聞到一點,但如果你問我,它會比嘗試將不兼容的類型存儲在同一字段中更好。

0

愚蠢的錯誤,如「我們知道PK是GUID所以它的長度總是很多」 ......

1

您確定要這麼做嗎?

我明白想要的GUID,但你真的想他們是你的數據庫的PK。我做的一些非正式測試表明,使用GUID PK進行連接/搜索相對於整數PK大約有10-15%的命中。我建議你在當前的人羣中嘗試一些帶有GUID的測試,看看性能如何。將一個唯一索引的GUID列添加到您的表中並保留它們可能會更好。

+0

對此的更多研究表明,GUID作爲varchar和GUID作爲UUID可能存在性能差異。大多數dbs支持內部表示爲數字而不是字符串的UUID數據類型。在可用時使用uuid數據類型可能是一個好主意。 – AngerClown 2010-02-23 15:24:40