7
我在我的系統中有一個實體,它自然需要一個標識符,以便它可以唯一標識。假設數據庫用於使用本地策略生成標識符,那麼顯然應用程序代碼沒有分配標識符的這種責任。 現在,該實體的一個實例能否在持久化之前被認爲是有效的並獲取其標識符?或者我應該使用其他策略來爲我的實體分配其標識符,以便在其構造函數被調用時獲取其標識符?DDD實體及其標識符
我在我的系統中有一個實體,它自然需要一個標識符,以便它可以唯一標識。假設數據庫用於使用本地策略生成標識符,那麼顯然應用程序代碼沒有分配標識符的這種責任。 現在,該實體的一個實例能否在持久化之前被認爲是有效的並獲取其標識符?或者我應該使用其他策略來爲我的實體分配其標識符,以便在其構造函數被調用時獲取其標識符?DDD實體及其標識符
這是一個廣泛的話題,但這裏有兩種可能:
定義基於business keys您hashCode()
和equals(..)
合同。例如,對於User
實體,這將是用戶名,而不是自動生成的ID。因此,在持久化之前,您將能夠在收集中使用實體
使用UUID
作爲主鍵,並自行處理生成。見傑夫阿特伍德this article和this article展示的方式來與Hibernate
使用它(既然你提到DDD和冬眠,看看我的this article)
謝謝,我想我會一起去第二個選項,將自己生成ID。 – 2010-10-03 08:08:16
對於GUID文章+1 – 2010-10-03 15:09:07