的Grails docs鼓勵使用複合主鍵,但在this video(26:00 - 29:00)@BurtBeckwith使用複合主鍵,因爲他談到加入表,而不是使用收藏領域類的映射的性能優勢。這就提出了幾個問題:我應該在Grails中使用複合主鍵嗎?
- 爲什麼Grails的文檔不鼓勵使用複合主鍵的?
- 爲什麼Burt甚至使用複合鍵?我嘗試沒有一個,一切似乎都很好。我也沒有覆蓋
hashcode
或equals
。 - Burt在製作視頻時使用了Grails 1.3,他對於收藏的表現擔心是否仍然有效?我可以通過打開SQL日誌來自己測試,但我還沒有完成。
是否將UserRole表與隱式創建的連接表保持一致?如果你沒有在連接表上使用複合PK,那麼該表中的每個條目都會有'id'和'version'。我不認爲這是一個巨大的退步,所以我很難理解爲什麼我們會付出額外的努力來創建一個組合鍵。比較兩種方法生成的SQL時,我也感到困惑(將連接表映射爲組合鍵或將連接表映射爲沒有組合鍵)。複合PK方法的SQL似乎更復雜。我可以發佈它,如果你想。 – ubiquibacon
這不是很重要,但工作已完成,現在封裝在生成域類的腳本中。但重要的是不要太擔心默認實現 - 插件和Spring Security不關心用戶和角色數據來自哪裏,只是在某些時候它的格式正確。隨意使用任何你想要的方法,使用自定義的'UserDetailsService'等。 –