如何限制域限制數據的更新?Hibernate過濾器的更新?
比方說,我有我的休眠應用程序,它允許查看特定國家的所有合同的用戶(即過濾:國家=「美國」)
我怎麼能保證,該用戶只能插入國家='美國'的新記錄?
有沒有像'過濾器來限制更新語句'在休眠?
如何限制域限制數據的更新?Hibernate過濾器的更新?
比方說,我有我的休眠應用程序,它允許查看特定國家的所有合同的用戶(即過濾:國家=「美國」)
我怎麼能保證,該用戶只能插入國家='美國'的新記錄?
有沒有像'過濾器來限制更新語句'在休眠?
你可以通過實現PreUpdateListener/PreInsertListener在休眠層做到這一點,否決了更新,但是這很可能是過度殺死在大多數情況下。
我只會這樣做,如果這對於安全原因至關重要,並且除了之外還有驗證邏輯更接近視圖或控制器層。您沒有提及這是什麼類型的應用程序,但幾乎所有UI框架(Web,桌面或移動設備)都具有驗證支持,這將使處理這類邏輯更爲方便(而不是處理來自持久層的異常)。
一種選擇是處理支票在你的DAO例如:
public void saveContract(Contract contract, String countryCode) {
if (contract.getCountryCode().equals(countryCode)) {
threw InvalidContractException
} else {
saveContract(contract) }
private void saveContract(Contract contract)
我不認爲它可以通過聲明進行檢查。
如果用戶在數據庫級別進行身份驗證,即。每個應用。用戶有它自己的數據庫用戶,那麼你可以創建一個表
DB_USER,CTRY
和使用是指在該表在合同中映射?!
,或者您可以使用虛擬專用數據庫