0
我必須設計一個表來存儲一些遠程數據。我通過Web服務獲得的數據有一個候選鍵,兩列的組合,但我看到很少的帖子,他們不鼓勵在hibernate中使用複合鍵,而是推薦使用代理鍵。如果我使用組合鍵設計表,那麼我可以直接更新數據,但如果我使用代理鍵,那麼在更新之前我必須首先獲取主鍵。我的問題是我應該使用哪一個組合鍵或代理鍵?休眠組合鍵或代理鍵
我必須設計一個表來存儲一些遠程數據。我通過Web服務獲得的數據有一個候選鍵,兩列的組合,但我看到很少的帖子,他們不鼓勵在hibernate中使用複合鍵,而是推薦使用代理鍵。如果我使用組合鍵設計表,那麼我可以直接更新數據,但如果我使用代理鍵,那麼在更新之前我必須首先獲取主鍵。我的問題是我應該使用哪一個組合鍵或代理鍵?休眠組合鍵或代理鍵
說不復合鍵becasue ...
因此建議使用代理鍵。雖然它有其自身的缺點
與休眠的Java持久性陳述參考:
更多有經驗的Hibernate用戶獨佔使用saveOrUpdate();它更容易讓Hibernate決定什麼是新的和什麼是舊的,尤其是在具有混合狀態的更復雜的對象網絡中。只有 獨佔saveOrUpdate()的缺點(不是很嚴重)是 ,它有時無法猜測實例是舊的還是新的 而不在數據庫中觸發SELECT(例如,當類是 映射到自然組合鍵和無版本或時間戳 屬性。
限制的一些表現形式可以找到here。
因此,在使用自然鍵時,如果使用自然鍵,並且使用替代鍵時最好使用它們。
我必須更新超過一百萬條記錄,如果我使用代理鍵,那麼我必須對所有記錄進行選擇和更新。有什麼方法可以提高性能? – wolverine
更新一百萬條記錄聽起來像你可能想要這樣做,而不休眠。 –