理解POCO

來源: crazycoder  發布時間: 2011-01-31 13:12  閱讀: 10505 次  推薦: 17   原文鏈接   [收藏]  

  理解POCO先要理解POJO
  1、什么是POJO
  POJO的名稱有多種,pure old java object 、plain ordinary java object 等。
  按照Martin Fowler的解釋是“Plain Old Java Object”,從字面上翻譯為“純潔老式的java對象”,但大家都使用“簡單java對象”來稱呼它。
  POJO的內在含義是指那些沒有從任何類繼承、也沒有實現任何接口,更沒有被其它框架侵入的java對象。
  POCO的概念是從java的POJO借用而來,而兩者的含義是一致的,不同的僅僅是使用的語言不一樣。所以POCO的解釋就是“Plain Old C# Object”。
  2、為什么會有POJO?
  主要是Java的開發者被EJB的繁雜搞怕了,大家經過反思,又回歸“純潔老式”的JavaBean,即有無參構造函數,每個字段都有getter和setter的java類。
  3、POJO的意義
  POJO讓開發者可專注于業務邏輯和脫離框架的單元測試。除此之外, 由于POJO并不須要繼承框架的類或實現其接口,開發者能夠極其靈活地搭建繼承結構和建造應用。
  POJO的意義就在于它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現實。
  先寫一個核心POJO,然后實現業務邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現數據綁定接口,變成VO(View Object)。
  4、POJO與PO、VO的區別
  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。
  持久對象實際上必須對應數據庫中的entity,所以和POJO有所區別。比如說POJO是由new創建,由GC回收。但是持久對象是 insert數據庫創建,由數據庫delete刪除的。基本上持久對象   生命周期和數據庫密切相關。另外持久對象往往只能存在一個數據庫 Connection之中,Connnection關閉以后,持久對象就不存在了,而POJO只要不被GC回收,總是存在的。
  由于存在諸多差別,因此持久對象PO(Persistent Object)在代碼上肯定和POJO不同,起碼PO相對于POJO會增加一些用來管理數據庫entity狀態的屬性和方法。而ORM追求的目標就是要 PO在使用上盡量和POJO一致,對于程序員來說,他們可以把PO當做POJO來用,而感覺不到PO的存在。
  5、POJO的擴展
  POJO僅包含最簡單的字段屬性,沒有多余的東西,它本質上就是一個普通的JavaBean。
  但是在POJO的基礎上,能夠擴展出不同的對象。

  • 為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。
  • 為POJO增加了數據綁定功能之后,POJO就變成了View Object,即UI Model。
  • 為POJO增加業務邏輯的方法(比如單據審核、轉帳……)之后,POJO就變成了Domain Model。
  • POJO還可以當作DTO使用。
17
2
 
標簽:POCO
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()