2014-09-30 66 views
0

我們使用Hibernate 4.x來實現多租戶,每個租戶使用單獨的DATABASE。Hibernate 4.x使用MYSQL的多租戶ID生成問題

我們使用Hibernate提供的增量策略來生成ID。

ID生成並不是特定於租戶的。

有沒有什麼辦法可以限制特定於租戶的ID生成,而不是從普通緩存中獲取。

我看到的另一個問題是服務器重新啓動。

服務器重新啓動後,如果租戶1發生第一次SQL操作,則Hibernate開始緩存從租戶1數據庫中的Id引用的ID。 如果後續操作在其他Tenant上執行,並且它已具有Hibernate緩存提供的Id值,則可能會產生衝突。

我本來可以使用序列來生成ID,但MYSQL不支持序列。

有沒有辦法避免從普通緩存中獲取ID?

回答

0

處理此問題的方法之一是使用JPA提供的「身份」ID生成機制。 這有性能影響。但是整個租戶的ID生成是正確的。 我試過這種方法,它工作。

其他方法將使用基於表的ID生成,使用HiLow算法或基於UUID的ID生成方法。