佩服能將複雜難懂的技術,抽象成簡單易懂事物的人。 厭惡將簡單易懂的技術,添加一堆專業術語將別人弄的頭暈目眩的人。 PO VO BO DTO POJO DAO 總體一覽: 1.DAO[data access object]數據訪問對象 DAO層對開發人員黑盒,由架構師設計封裝。 在很長一段時間內,我將 ...
佩服能將複雜難懂的技術,抽象成簡單易懂事物的人。
厭惡將簡單易懂的技術,添加一堆專業術語將別人弄的頭暈目眩的人。
PO VO BO DTO POJO DAO 總體一覽:
1.DAO[data access object]數據訪問對象
DAO層對開發人員黑盒,由架構師設計封裝。
在很長一段時間內,我將它理解為對資料庫的訪問,後面隨著項目的積累。
發現自己的理解相對狹隘,對數據訪問不僅僅指的是對資料庫的訪問。
假如A系統調用B系統的服務獲取數據,這時候A系統對B系統訪問數據對象的封裝也可以稱為DAO。
2.DTO[data transfer object]數據傳輸對象
假設數據表中存在20個欄位,但是在頁面展示列表的時候,這20個欄位顯然都不會用到。
我想對其中的5個欄位進行展示,而且這5個欄位展示的時候,也並不是資料庫中他們原有的樣子。
還需要進行計算、截取、業務代碼轉名稱 .....等等
數據傳輸對象因此而被誕生,一是能提高數據傳輸的速度,二能隱藏後端表結構。
3.PO[persistant object]持久層對象
持久對象屬性和資料庫中的欄位是一一對應的,資料庫中的一條數據可以理解為一個持久對象。
因ORM框架的廣泛使用而被引入到 JavaEE 項目設計當中。
4.BO[bussiness object]業務對象
業務對象顧名思義是在業務處理中抽象出來的對象,裡面除了get/set 方法外,也可以有對欄位進行業務處理的方法。
假設你要對一個班級進行業務處理,其中的學生、教師、甚至是桌椅板凳都是業務對象的組成部分。
當然其中的學生、教室....都可以是和資料庫對應的PO。
5.VO[value object]值對象
值對象也可以稱做頁面對象,如果稱做頁面對象,那門它所代表的將是整個頁面展示層的對象。
可以由需要的業務對象進行的換算轉換而來。
如果稱呼他為值對象的話,那門他可以理解為存放業務對象的一個地方。
假設鍋碗瓢盆分別為對應的業務對象的話,那門整個碗櫃就是一個值對象。
4.POJO[plain ordiary java object] 簡單java對象
簡單java對象應該是JavaEE世界裡面最靈活的對象。
在簡單系統中,如果從資料庫到頁面展示都是POJO的話,它可以是DTO。
如果從資料庫中到業務處理中都是POJO的話,他也可以是BO。
同樣如果從資料庫到整個頁面的展示的話,它同樣可以是VO。
小結:
各個數據對象之間的轉換是相當靈活的,在項目中可以定義上述對象的全部和其中的幾種類型,這取決與架構師和需求。
在大型項目中,架構師在項目初期的任務除了搭建起整個開發環境以外,定義在系統中流轉的數據結構對象同樣是重重之重。
這項工作需要許多項目的積累和長期對軟體開發的思考,多實踐,多思考,提供最合適的數據對象解決方法,方能展現架構師的魅力。