好吧。我在這裏有點困惑...實體對象vs值對象 - 休眠和彈出
可以說我有一個叫User
的班。
class User {
// all variables
// all getters and setters
}
現在,我使用JSR 303的驗證和放@NotNull
,@Range
,等這裏的變量。
我用它作爲Form/Command對象。意思是,當提交表單時,這些值將被驗證,並且BindingResult
會給我提供錯誤。
- 這是否應該在Hibernate的實體對象中使用? (如果是這樣,我需要添加其他休眠註釋,如
@Entity
,@Id
,@Column
,等等在驗證註釋之上) - 當我們從數據庫加載數據時,這些驗證是否也啓動了? (如果是的話,如果數據已經存在,並且不確認驗證是什麼?)
- 我們通常在哪裏寫業務驗證,例如國家是否存在於數據庫中,xyz值是否存在於不同的數據庫中桌子等?
的問題在這裏出現的還有: - 用戶的形式可能沒有存在於用戶類 的所有字段 - 數據庫表的用戶可以有更多的字段或超過用戶類 領域少 - 形式可以有場不同的對象,例如用戶和訂單。
我們如何處理這些?
試圖環繞它
不,您不應該將您的實體對象暴露給表示層。您可以爲業務和表示層使用Spring驗證框架。你有不同於數據庫約束的驗證嗎? – user2033853
@ user2033853那麼你是說我應該有兩個對象用於前端和另一個用於域/實體?我們如何命名它們?任何參考? –
你可以看一下域驅動設計:http://en.wikipedia.org/wiki/Domain-driven_design – user2033853