|
理解POCO先要理解POJO
1、什么是POJO
POJO的名稱有多種,pure old Java object 、plain ordinary Java object 等。
按照Martin Fowler的解釋是“Plain Old Java Object”,從字面上翻譯為“純潔老式的Java對象”,但大家都使用“簡單Java對象”來稱呼它。
POJO的內(nèi)在含義是指那些沒有從任何類繼承、也沒有實現(xiàn)任何接口,更沒有被其它框架侵入的Java對象。
POCO的概念是從Java的POJO借用而來,而兩者的含義是一致的,不同的僅僅是使用的語言不一樣。所以POCO的解釋就是“Plain Old C# Object”。
2、為什么會有POJO?
主要是Java的開發(fā)者被EJB的繁雜搞怕了,大家經(jīng)過反思,又回歸“純潔老式”的JavaBean,即有無參構(gòu)造函數(shù),每個字段都有g(shù)etter和setter的Java類。
3、POJO的意義
POJO讓開發(fā)者可專注于業(yè)務(wù)邏輯和脫離框架的單元測試。除此之外, 由于POJO并不須要繼承框架的類或?qū)崿F(xiàn)其接口,開發(fā)者能夠極其靈活地搭建繼承結(jié)構(gòu)和建造應(yīng)用。
POJO的意義就在于它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現(xiàn)實。
先寫一個核心POJO,然后實現(xiàn)業(yè)務(wù)邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現(xiàn)數(shù)據(jù)綁定接口,變成VO(View Object)。
4、POJO與PO、VO的區(qū)別
POJO是指簡單Java對象(Plain Old Java Objects、pure old Java object 或者 plain ordinary Java object)。
PO是指持久對象(persistant object持久對象)。
VO是指值對象或者View對象(Value Object、View Object)。注意,本文的VO特指View Object。
持久對象實際上必須對應(yīng)數(shù)據(jù)庫中的entity,所以和POJO有所區(qū)別。比如說POJO是由new創(chuàng)建,由GC回收。但是持久對象是 insert數(shù)據(jù)庫創(chuàng)建,由數(shù)據(jù)庫delete刪除的?;旧铣志脤ο?nbsp; 生命周期和數(shù)據(jù)庫密切相關(guān)。另外持久對象往往只能存在一個數(shù)據(jù)庫 Connection之中,Connnection關(guān)閉以后,持久對象就不存在了,而POJO只要不被GC回收,總是存在的。
由于存在諸多差別,因此持久對象PO(Persistent Object)在代碼上肯定和POJO不同,起碼PO相對于POJO會增加一些用來管理數(shù)據(jù)庫entity狀態(tài)的屬性和方法。而ORM追求的目標就是要 PO在使用上盡量和POJO一致,對于程序員來說,他們可以把PO當做POJO來用,而感覺不到PO的存在。
5、POJO的擴展
POJO僅包含最簡單的字段屬性,沒有多余的東西,它本質(zhì)上就是一個普通的JavaBean。
但是在POJO的基礎(chǔ)上,能夠擴展出不同的對象。
- 為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。
- 為POJO增加了數(shù)據(jù)綁定功能之后,POJO就變成了View Object,即UI Model。
- 為POJO增加業(yè)務(wù)邏輯的方法(比如單據(jù)審核、轉(zhuǎn)帳……)之后,POJO就變成了Domain Model。
- POJO還可以當作DTO使用。
NET技術(shù):理解POCO,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。