javascript
Spring MVC 返回视图时添加的模型数据------POJO
POJO(Plain Old Java Objects)簡單的Java對象,實際就是普通JavaBeans,是為了避免和EJB混淆所創(chuàng)造的簡稱。
使用POJO名稱是為了避免和?EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter setter方法的類,沒有業(yè)務邏輯,有時可以作為?VO(value -object)或?dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業(yè)務方法,也不能攜帶有connection之類的方法。
POJO是Plain Old Java Objects的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業(yè)務邏輯的協(xié)助類。 POJO實質(zhì)上可以理解為簡單的實體類,顧名思義POJO類的作用是方便程序員使用數(shù)據(jù)庫中的數(shù)據(jù)表,對于廣大的程 序員,可以很方便的將POJO類當做對象來進行使用,當然也是可以方便的調(diào)用其get,set方法。POJO類也給我們在struts框架中的配置帶來了 很大的方便。 POJO有一些private的?參數(shù)作為對象的屬性。然后針對每個?參數(shù)定義了get和set方法作為訪問的接口。例如: public class User { private long id; private String name; public void setId(long id) { this. id = id; } public void setName(String name) { this. name=name; } public long getId() { return id; } public String getName() { return name; } } POJO對象有時也被稱為?Data對象,大量應用于表現(xiàn)現(xiàn)實中的對象。如果項目中使用了Hibernate?框架,有一個關聯(lián)的xml文件,使對象與數(shù)據(jù)庫中的表對應,對象的屬性與表中的字段相對應。 錯誤的認識: POJO是這樣的一種“純粹的”JavaBean,在它里面除了JavaBean規(guī)范的方法和屬性沒有別的東西,即 private屬性以及對這個屬性方法的public的get和set方法。我們會發(fā)現(xiàn)這樣的JavaBean很“單純”,它只能裝載數(shù)據(jù),作為數(shù)據(jù)存儲 的載體,而不具有業(yè)務邏輯處理的能力。 真正的意思: POJO = "Plain Ordinary Java Object",是MartinFowler等發(fā)明的一個術語,用來表示普通的Java對象,不是JavaBean, EntityBean 或者 SessionBean。POJO不擔當任何特殊的角色,也不實現(xiàn)任何特殊的Java框架的接口如,?EJB,?JDBC等等。 即POJO是一個簡單的普通的Java對象,它不包含業(yè)務?邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現(xiàn)任何其它Java框架的類或接口。?
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ù),每個字段都有getter和setter的java類。
3.?????POJO的意義
POJO讓開發(fā)者可專注于業(yè)務邏輯和脫離框架的單元測試。除此之外,?由于POJO并不須要繼承框架的類或?qū)崿F(xiàn)其接口,開發(fā)者能夠極其靈活地搭建繼承結(jié)構(gòu)和建造應用。
?
POJO的意義就在于它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現(xiàn)實。
先寫一個核心POJO,然后實現(xiàn)業(yè)務邏輯接口和持久化接口,就成了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。
?
持久對象實際上必須對應數(shù)據(jù)庫中的entity,所以和POJO有所區(qū)別。比如說POJO是由new創(chuàng)建,由GC回收。但是持久對象是insert數(shù)據(jù)庫創(chuàng)建,由數(shù)據(jù)庫delete刪除的。基本上持久對象生命周期和數(shù)據(jù)庫密切相關。另外持久對象往往只能存在一個數(shù)據(jù)庫Connection之中,Connnection關閉以后,持久對象就不存在了,而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的基礎上,能夠擴展出不同的對象。
l???????????為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。
l???????????為POJO增加了數(shù)據(jù)綁定功能之后,POJO就變成了View Object,即UI Model。
l???????????為POJO增加業(yè)務邏輯的方法(比如單據(jù)審核、轉(zhuǎn)帳……)之后,POJO就變成了Domain Model。
l???????????POJO還可以當作DTO使用。
轉(zhuǎn)載于:https://www.cnblogs.com/skyLogin/p/6571124.html
總結(jié)
以上是生活随笔為你收集整理的Spring MVC 返回视图时添加的模型数据------POJO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android opencv cv
- 下一篇: kafka彻底删除topic