個人覺得hibernate的繼承映射是很好的東西,但是看了不少項目都是使用的一個type字段來區分類型,而我們老師也是這樣做的。
從對象的設計來說,User和Admin可以是一類,使用繼承映射恰恰合適。而使用type字段等,第一:不符合面向對象的思想,第二:字段冗余
但是,如果使用繼承映射,我暫時想到的無法解決的問題包括:
對於角色轉換,使用字段的方式可以通過改變這個字段來修改角色,比如User變為Admin,Admin變為User,這在一些權限管理的系統中肯定是會出現的。使用hibernate的繼承映射的話,發現無法轉換已經持久化的對象類型,如果通過先刪再插入的方法,對於用的自動生成id的話,又無法主動指定id,所以不可行。
所以,如果使用hibernate的繼承映射,我上面提到的兩個問題:無法轉換角色(類型)、自動生成列手動指定id 是否確實存在?
學生一個,所以實際開發經驗還缺乏,所以不確定如果采用繼承映射,是否還會有其他潛在的問題。 或者說,最好不實用繼承映射,而是使用傳統的type方式。
1.你說的無法轉換角色(類型),一般的項目中角色是由超級管理員分配的user就是user,admin就是admin,為什麼要將它進行轉換,你創建一個role的實體表和映射表。
2.如果是自動生成id,則無法手動制定ID,顯示層會 報no result and imput,前些天我遇到過。