我喜歡爲我所有的JPA域實體使用BaseDomain類。在基類中,我有一個對象ID,存儲爲一個字符串,從UUID.random()生成。對象ID在創建對象時分配。實體類還有一個主鍵,由數據庫在持久時分配。Persit隨機UUID充當JPA實體上的對象ID?
直到這一點,我一直堅持基於字符串的對象ID。這爲每個表添加了一個額外的列,但這並不妨礙我。
我在想 - 是否有任何理由堅持對象ID(生成的UUID)?還是應該隨機的UUID留在Java空間中?
我總是將我的域類hashCode()和equals()方法基於UUID而不是主鍵。這很好,因爲UUID在整個生命週期中都保持不變,無論是在JVM還是在數據庫中。
如果我停止保持UUID,那麼hashCode()和equals()方法會是什麼樣子?它是否像兩層比較,首先使用主鍵(如果它不是null),然後使用對象ID(如果主鍵爲null)?
爲什麼不使用UUID作爲主鍵? –