前段時間從同事處聽到了許多帶O的Java相關(guān)詞匯累奈,一時間有點(diǎn)懵逼局蚀;回去谷歌整理理解后,記錄下來碎紊,便于查閱佑附。
參考的文章如下:
主要記錄以下幾個,希望對大家有幫助
- POJO => 簡單的Java對象
- PO =>持久對象仗考,數(shù)據(jù)
- DAO
- VO => 值對象/ view object表現(xiàn)層對象音同,前端界面展示
- DTO => 傳輸對象,前端調(diào)用時傳輸
- BO => 業(yè)務(wù)對象秃嗜,封裝對象权均、復(fù)雜對象 ,里面可能包含多個類
POJO
POJO, or Plain Old Java Object, is a normal Java object class (that is, not a JavaBean, EntityBean etc.) and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
總結(jié)一下锅锨,POJO就是簡單的Java對象叽赊,他不具有任何特殊角色、不繼承或不實現(xiàn)任何其他Java框架的類接口
上面說的 PO橡类、VO蛇尚、DTO 都是典型的 POJO芽唇。而 DAO顾画、BO 一般都不是 POJO,只提供一些調(diào)用方法匆笤。
PO
PO 是 Persistant Object 的縮寫研侣,用于表示數(shù)據(jù)庫中的一條記錄映射成的 java 對象。PO 僅僅用于表示數(shù)據(jù)炮捧,沒有任何數(shù)據(jù)操作庶诡。
DAO
DAO 是 Data Access Object 的縮寫,用于表示一個數(shù)據(jù)訪問對象咆课。使用 DAO 訪問數(shù)據(jù)庫末誓,包括插入、更新书蚪、刪除喇澡、查詢等操作,與 PO 一起使用殊校。DAO 一般在持久層晴玖,完全封裝數(shù)據(jù)庫操作,對外暴露的方法使得上層應(yīng)用不需要關(guān)注數(shù)據(jù)庫相關(guān)的任何信息。
VO
VO 是 Value Object 的縮寫呕屎,用于表示一個與前端進(jìn)行交互的 java 對象让簿。VO 只包含前端需要展示的數(shù)據(jù)即可。
DTO
DTO 是 Data Transfer Object 的縮寫秀睛,用于表示一個數(shù)據(jù)傳輸對象尔当。DTO 通常用于不同服務(wù)或服務(wù)不同分層之間的數(shù)據(jù)傳輸。
DTO 與 VO 概念相似蹂安,并且通常情況下字段也基本一致居凶。但 DTO 與 VO 又有一些不同,這個不同主要是設(shè)計理念上的藤抡,比如 API 服務(wù)需要使用的 DTO 就可能與 VO 存在差異侠碧。
BO
BO 是 Business Object 的縮寫,用于表示一個業(yè)務(wù)對象缠黍。BO 包括了業(yè)務(wù)邏輯弄兜,常常封裝了對 DAO、RPC 等的調(diào)用瓷式,可以進(jìn)行 PO 與 VO/DTO 之間的轉(zhuǎn)換替饿。BO 通常位于業(yè)務(wù)層,要區(qū)別于直接對外提供服務(wù)的服務(wù)層:BO 提供了基本業(yè)務(wù)單元的基本業(yè)務(wù)操作贸典,在設(shè)計上屬于被服務(wù)層業(yè)務(wù)流程調(diào)用的對象视卢,一個業(yè)務(wù)流程可能需要調(diào)用多個 BO 來完成。