一個實體(比方說一個UserEntity)對它的屬性有嚴格的規則,它可以存在兩種狀態 - 持久化(意味着它有一個id
)和預先持久化(這意味着它還沒有id
)。如何在持久化之前處理域實體驗證?
根據對this question about how to handle required properties的回答,「真正的」用戶實體只能通過傳遞給其構造函數的id
創建。
但是,當我需要從瀏覽器發送的信息創建一個new UserEntity
時,我需要能夠在持久化到db之前驗證信息。
在過去,我會簡單地創建一個空白UserEntity(無id
),設置新的屬性,以及驗證它 - 但是,在考慮實體的這種新的,更安全的方法,我不應該永遠創建一個不帶id
的新UserEntity。
我不想創建兩個知道如何驗證我的UserEntity屬性的地方,因爲如果他們改變了(他們會改變的話),它將會更新代碼兩倍並且增加錯誤的機率。
如何有效地集中我實體屬性的驗證知識?
注意
我有一個想法體現in this question,其中我認爲存儲在標準值對象,它會知道有關它的性質的規則,如電子郵件,密碼和名字的非國有性質不同的服務,如Controller,Validator和Repo或Mapper可以使用。
任何人都可以用更簡單/不同的方式解釋這個嗎? – johnnietheblack 2012-03-22 21:39:31