bean包、entity包、mode包、domain包的区别
文章目錄
- bean
- entity
- model
- domain
- 總結
bean
包含的都是 JavaBean。
JavaBean 是一種 Java 語言寫成的可重用組件。為寫成 JavaBean,類必須是具體和公共的,并且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成屬性。JavaBean 主要指的是一種規范,即包含一組 set 和 get 方法的類。JavaBean 可以使應用程序更加面向對象,可以把數據封裝起來,把應用的業務邏輯和顯示邏輯分離開,降低了開發的復雜程度和維護成本。
和 Entity Bean 的區別是,JavaBean 可以包含業務邏輯代碼,并且不一定與數據表對應。
entity
包含的都是實體 bean,即 Entity Bean。
entity 的意思就是實體的意思,所以也是最常用到的,entity 包中的類是必須和數據庫中的表相對應的,比如說:數據庫有個 user 表,字段有 bigint 類型的 id,varchar 類型的姓名,那么 entity 包中的 User 類也必須是含有這兩個字段的,且類型必須一致。不能數據庫存的是 bigint 類型,User 類里的對應屬性是 String 類型。這樣做的好處是實體類和數據庫保持一致,當用到 hibernate 或 mybatie 框架來操作數據庫的時候,操作這個實體類就行,寫 sql 之前不需要再做數據類型的處理。
model
model 大家不陌生,都知道是模型的意思,當用 model 當包名的時候,一般里面存的是實體類的模型,一般是用來給前端用的。比如:前端頁面需要顯示一個 user 信息,user 包含姓名、性別、所在地區,這些信息存在數據庫的時候,姓名直接存姓名,但是性別和所在地區一般會用數據字典的編號存到數據庫,比如:1 代表男,2 代表女,數據庫存的就是 1 或 2,如果用 entity 的話,把 1、2 返回給前端,前端可能并不知道這是什么玩意,就算前端知道 1 代表男,2 代表女,也需要額外寫一個 js 進行判斷和相關的數據轉換處理。如果后來數據庫變動了,1 代表女,2 代表男,前端的 js 又需要重新寫,很顯然這樣不利于維護。所以就需要 model 來解決,后端從數據庫取了數據轉化為前端需要的數據后再傳給前端,前端就不需要對數據進行額外的處理,直接顯示就行了。還有一種情況,數據庫里面的 user 表字段有很多個,但是前端頁面只需要顯示姓名,如果把 entity 全部傳給前端,無疑傳了很多沒用的數據。這時候 model 就很好的解決了這個問題,前端需要什么數據,model 就包含什么數據就行了。
model 是 MVC 中的概念,其中的類大部分是 POJO 類,用來給 View 組件提供要展示的數據,例如,用戶個人信息界面,就可以將個人有關的所有信息封裝成一個 POJO 對象,再將這個對象返回給客戶端,客戶端就可以解析里面的數據進行展示了。
一個 POJO 類如果都是用來提供展示數據的,那么就叫 VO,如果是用來傳遞數據的,就叫 DTO。例如,可以在視圖層中,將用戶請求參數數據封裝成一個 VO 對象,再封裝成 DTO 對象,再調用業務層的方法,將 DTO 對象作為參數進行傳遞,業務層根據 DTO 的數據進行相關業務的處理,再將數據封裝成 DO 對象,再調用 DAO 的相關方法,將 DO 對象作為參數傳遞。DAO 對象就可以根據 DO 的數據對數據庫進行操作(增刪改查)。
domain
domain 這個包國外很多項目經常用到,字面意思是域的意思。比如一個商城的項目,商城主要的模塊就是用戶,訂單,商品三大模塊,那么這三塊數據就可以叫做三個域,domain 包里存放的就是這些數據,表面上這個包和 entity 和 model 包里存的數據沒什么區別,其實差別還是挺大的,特別是一些大型的項目。比如一個招聘網站的項目,最重要的對象就是簡歷了,那么簡歷是怎么存到數據庫的呢,不可能用一張表就能存的,因為簡歷包含基本信息和工作經驗,項目經驗,學習經驗等?;拘畔⒖梢源嬖诤啔v表,但是涉及到多條的就不行,因為沒人知道有多少條工作經驗,項目經驗,所以必須要單獨建工作經驗表和項目經驗表關聯到簡歷基本信息表。但是前端頁面是不關心這些的,前端需要的數據就是一個簡歷所有的信息,這時就可以用 domain 來處理,domain 里面的類就是一個簡歷對象,包含了簡歷基本信息以及工作經驗,項目經驗等。這樣前端只需要獲取一個對象就行了,不需要獲取基本信息的同時,還要從基本信息里面獲取簡歷編號,再拿著簡歷編號去獲取相關的工作經驗、項目經驗等信息。
當然,model 也是可以達到 domain 的效果。這個完全是看個人喜好和項目的整體架構,因為創建不同的 package 的作用本來也就是想把項目分成不同的層,便于管理和維護。如果你樂意,你可以創建 entity 包,然后在里面存圖片,創建 images 文件夾,里面存 js,只是你自己看得懂還不夠,你還要保證你的團隊不會打死你。所以開發的時候,建類建包的命名規范性還是很重要的。
總結
那么三句話總結下entity、model、domain的不同:
1.entity 字段必須和數據庫字段一樣
2.model 前端需要什么我們就給什么
3.domain 代表一個對象模塊
總結
以上是生活随笔為你收集整理的bean包、entity包、mode包、domain包的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ IDEA for Ma
- 下一篇: linux系统安装软件(linux系统