entity、bo、vo、po、dto、pojo、dao、service、controler如何理解和区分?
dao層:
DAO層叫數(shù)據(jù)訪問(wèn)層,全稱為data access object,屬于一種比較底層,比較基礎(chǔ)的操作,具體到對(duì)于某個(gè)表的增刪改查,也就是說(shuō)某個(gè)DAO一定是和數(shù)據(jù)庫(kù)的某一張表一一對(duì)應(yīng)的,其中封裝了增刪改查基本操作,建議DAO只做原子操作,增刪改查。
service層:
Service層叫服務(wù)層,被稱為服務(wù),粗略的理解就是對(duì)一個(gè)或多個(gè)DAO進(jìn)行的再次封裝,封裝成一個(gè)服務(wù),所以這里也就不會(huì)是一個(gè)原子操作了,需要事物控制。
Entity
最常用實(shí)體類,基本和數(shù)據(jù)庫(kù)表一一對(duì)應(yīng),一個(gè)實(shí)體對(duì)應(yīng)一張數(shù)據(jù)庫(kù)表。
controler層
Controler負(fù)責(zé)請(qǐng)求轉(zhuǎn)發(fā),接受頁(yè)面過(guò)來(lái)的參數(shù),傳給Service處理,接到返回值,再傳給頁(yè)面。
Bo(business object)
代表業(yè)務(wù)對(duì)象的意思,Bo就是把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象(注意是業(yè)務(wù)邏輯),這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。通過(guò)調(diào)用Dao方法,結(jié)合Po或Vo進(jìn)行業(yè)務(wù)操作。
形象描述為一個(gè)對(duì)象的形為和動(dòng)作,當(dāng)然也有涉及到基它對(duì)象的一些形為和動(dòng)作。
比如一個(gè)簡(jiǎn)歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。我們可以把教育經(jīng)歷對(duì)應(yīng)一個(gè)PO,工作經(jīng)歷對(duì)應(yīng)一個(gè)PO,社會(huì)關(guān)系對(duì)應(yīng)一個(gè)PO。
建立一個(gè)對(duì)應(yīng)簡(jiǎn)歷的BO對(duì)象處理簡(jiǎn)歷,每個(gè)BO包含這些PO。
這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對(duì)BO去處理。
封裝業(yè)務(wù)邏輯為一個(gè)對(duì)象(可以包括多個(gè)PO,通常需要將BO轉(zhuǎn)化成PO,才能進(jìn)行數(shù)據(jù)的持久化,反之,從DB中得到的PO,需要轉(zhuǎn)化成BO才能在業(yè)務(wù)層使用)。
關(guān)于BO主要有三種概念
1.只包含業(yè)務(wù)對(duì)象的屬性;
2.只包含業(yè)務(wù)方法;
3.兩者都包含。
在實(shí)際使用中,認(rèn)為哪一種概念正確并不重要,關(guān)鍵是實(shí)際應(yīng)用中適合自己項(xiàng)目的需要。
Vo(value object)
代表值對(duì)象的意思,通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,由new創(chuàng)建,由GC回收。
主要體現(xiàn)在視圖的對(duì)象,對(duì)于一個(gè)WEB頁(yè)面將整個(gè)頁(yè)面的屬性封裝成一個(gè)對(duì)象,然后用一個(gè)VO對(duì)象在控制層與視圖層進(jìn)行傳輸交換。
Po(persistant object)
代表持久層對(duì)象的意思,對(duì)應(yīng)數(shù)據(jù)庫(kù)中表的字段,數(shù)據(jù)庫(kù)表中的記錄在java對(duì)象中的顯示狀態(tài),最形象的理解就是一個(gè)PO就是數(shù)據(jù)庫(kù)中的一條記錄。
好處是可以把一條記錄作為一個(gè)對(duì)象處理,可以方便的轉(zhuǎn)為其它對(duì)象。Vo和Po,都是屬性加上屬性的get和set方法;表面看沒(méi)什么不同,但代表的含義是完全不同的。
Dto(data transfer object)
代表數(shù)據(jù)傳輸對(duì)象的意思
是一種設(shè)計(jì)模式之間傳輸數(shù)據(jù)的軟件應(yīng)用系統(tǒng),數(shù)據(jù)傳輸目標(biāo)往往是數(shù)據(jù)訪問(wèn)對(duì)象從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)
數(shù)據(jù)傳輸對(duì)象與數(shù)據(jù)交互對(duì)象或數(shù)據(jù)訪問(wèn)對(duì)象之間的差異是一個(gè)以不具任何行為除了存儲(chǔ)和檢索的數(shù)據(jù)(訪問(wèn)和存取器)
簡(jiǎn)而言之,就是接口之間傳遞的數(shù)據(jù)封裝
表里面有十幾個(gè)字段:id,name,gender(M/F),address,age,info……
頁(yè)面需要展示三個(gè)字段:name,gender(男/女),age
DTO由此產(chǎn)生,一是能提高數(shù)據(jù)傳輸?shù)乃俣?減少了傳輸字段),二能隱藏后端表結(jié)構(gòu)
Pojo(plian ordinary java object)
POJO持久化之后==〉PO
(在運(yùn)行期,由Hibernate中的cglib動(dòng)態(tài)把POJO轉(zhuǎn)換為PO,PO相對(duì)于POJO會(huì)增加一些用來(lái)管理數(shù)據(jù)庫(kù)entity狀態(tài)的屬性和方法。PO對(duì)于programmer來(lái)說(shuō)完全透明,
由于是運(yùn)行期生成PO,所以可以支持增量編譯,增量調(diào)試。)
POJO傳輸過(guò)程中==〉DTO
POJO用作表示層==〉VO
PO 和VO都應(yīng)該屬于POJO。
Controller
代表控制層,主要是Action/Servlet等構(gòu)成(Spring MVC則是通過(guò)@Controller標(biāo)簽使用)此層業(yè)務(wù)層與視圖層打交道的中間層,負(fù)責(zé)傳輸VO對(duì)象和調(diào)用BO層的業(yè)務(wù)方法,
負(fù)責(zé)視圖層請(qǐng)求的數(shù)據(jù)處理后響應(yīng)給視圖層。
View
代表視圖層的意思,主要是指由JSP、HTML等文件形成的顯示層。
所以實(shí)際項(xiàng)目中,一般都是這樣應(yīng)用的:
控制層(controller-action),業(yè)務(wù)層/服務(wù)層( bo-manager-service),實(shí)體層(po-entity),dao(dao),視圖對(duì)象(Vo-),視圖層(view-jsp/html)
總結(jié)
以上是生活随笔為你收集整理的entity、bo、vo、po、dto、pojo、dao、service、controler如何理解和区分?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于win10计划任务运行ps1脚本
- 下一篇: 虹科方案|虹科Vdoo安全平台-D-Li