【C# 序列化】理解POCO


總結:

1、POCO的解釋就是"Plain Old C# Object"。從字面上翻譯為"純潔老式的C#對象",但大家都使用"簡單java對象"來稱呼它。只有無參建構函式和屬性、字段(很少用到字段,默認都是屬性)的C#類,沒有多余的東西(接口、繼承、依賴)。另外提一點所有 DTO(只含屬性的類) 都是 POCO,但並非所有 POCO 都是 DTO。

 

理解POCO(Plain Old CLR Object)先要理解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使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM