entity、model和domain三者区别
先用三句話來簡單描述一下他們各自的特點:
| 名稱 | 特點 |
| entity | 字段必須和數(shù)據(jù)庫字段一樣 |
| model | 前端需要什么我們就給什么 |
| domain | 比較少用,代表一個對象模塊 |
1.entity實體
entity就是實體的意思,也是我們最常用到的。entity包中的類是必須和數(shù)據(jù)庫相對應的。比如說:數(shù)據(jù)庫有個user表,字段有l(wèi)ong類型的id,string類型的姓名,那么entity中的user類也必須是含有這兩個字段的,且類型必須一致。不能數(shù)據(jù)庫存的是long類型,user類里的屬性是string類型。
這樣做的好處是保持實體類和數(shù)據(jù)庫保持一致,另外,當用到hibernate或mybatie框架來操作數(shù)據(jù)庫的時候,操作這個實體類就行,寫sql之前不需要再做數(shù)據(jù)格式處理。
2.model模型
model大家不陌生,都知道是模型的意思,當用model當包名的時候,一般里面存的是實體類的模型,一般是用來給前端用的。比如:前端頁面需要顯示一個user信息,user包含姓名,性別,年齡,這些信息存在數(shù)據(jù)庫的時候,姓名直接存姓名,但是性別和年齡一般會用數(shù)據(jù)字典的編號存到數(shù)據(jù)庫,比如:1代表男,2代表女,數(shù)據(jù)庫存的就是1或2,如果用entity的話,把1、2給前端,前端就不知道是什么玩意,就算前端知道1代表男,2代表女,寫了一個js判斷數(shù)據(jù)處理,后來數(shù)據(jù)庫變動了,1代表女,2代表男,前端的js又需要重新寫,很顯然這樣不利于維護。所以就需要model來解決,后臺從數(shù)據(jù)庫取了數(shù)據(jù)轉(zhuǎn)化為前端需要的數(shù)據(jù)直接傳給前端,前端就不需要對數(shù)據(jù)來處理,直接顯示就行了。還有一種情況,數(shù)據(jù)庫里面的user表字段有十個,包含姓名,qq,生辰八字亂七八糟的等等,但是前臺頁面只需要顯示姓名,如果把entity全部傳給前臺,無疑傳了很多沒用的數(shù)據(jù)。這時候model就很好的解決了這個問題,前臺需要什么數(shù)據(jù),model就包含什么數(shù)據(jù)就行了。
3.domain域
domain這個包在國外很多大型項目經(jīng)常用到,字面意思是域的意思。它的范圍就有點廣了,比如一個商城的項目,商城主要的模塊就是用戶,訂單,商品三大模塊,那么這三塊數(shù)據(jù)就可以叫做三個域,domain包里就是存的就是這些數(shù)據(jù),表面上這個包和entity和model包里存的數(shù)據(jù)沒什么區(qū)別,其實差別還是挺大的,特別是一些大型的項目。比如一個招聘網(wǎng)站的項目,最重要的對象就是簡歷了,那么簡歷是怎么存到數(shù)據(jù)庫的呢,不可能用一張表就能存的,因為簡歷包含基本信息和工作經(jīng)驗,項目經(jīng)驗,學習經(jīng)驗等。基本信息可以存在簡歷表,但是涉及到多條的就不行,因為沒人知道有多少條工作經(jīng)驗,項目經(jīng)驗,所以必須要單獨建工作經(jīng)驗表和項目經(jīng)驗表關(guān)聯(lián)到簡歷基本信息表。但是前臺頁面是不關(guān)心這些的,前臺需要的數(shù)據(jù)就是一個簡歷所有信息,這時就可以用到domain來處理,domain里面的類就是一個簡歷對象,包含了簡歷基本信息以及l(fā)ist的工作經(jīng)驗,項目經(jīng)驗等。這樣前端只需要獲取一個對象就行了,不需要同時即要獲取基本信息,還要從基本信息里面獲取工作經(jīng)驗關(guān)聯(lián)的簡歷編號,然后再去獲取對應的工作經(jīng)驗了。
當然,如果用model的話也是可以達到domain的效果的。這個完全是看個人喜好和項目的整體架構(gòu),因為創(chuàng)建不同的package的作用本來也就是想把項目分成不同的層,便于管理和維護。如果你樂意,你可以創(chuàng)建entity包,然后在里面存圖片,創(chuàng)建images文件夾,里面存js。你自己能看懂就行,前提是如果是團隊開發(fā)的話能保證別人不打你。這個和語言一個道理,你在200年前和英國人說:private void set(int age),人家說:滾犢子;現(xiàn)在你這樣說,人家就知道是java語言了。能被人們通用的才叫語言,你說的別人聽不懂那只能算是鳥語。所以開發(fā)的時候,建類建包的命名規(guī)則規(guī)范性還是很重要的。
總結(jié)
以上是生活随笔為你收集整理的entity、model和domain三者区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装node-sass运行报错 Modu
- 下一篇: npm install --save和n