日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

POJO模式

發(fā)布時間:2024/4/14 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJO模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下面是摘自Martin Fowler個人網(wǎng)站的一句話:

“We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it’s caught on very nicely.”--Martin Fowler

我們疑惑為什么人們不喜歡在他們的系統(tǒng)中使用普通的對象,我們得到的結(jié)論是——普通的對象缺少一個響亮的名字,因此我們給它們起了一個,并且取得了很好的效果。——Martin Fowler

============================================

1、什么是POJO

POJO是Plain OrdinaryJava Object的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,沒有任何有關(guān)業(yè)務(wù)邏輯的實現(xiàn),可以把POJO作為支持業(yè)務(wù)邏輯的協(xié)助類。

POJO的名稱有多種,pure old java object 、plain ordinary java object 等。

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類。

POJO的意義就在于它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現(xiàn)實。先寫一個核心POJO,然后實現(xiàn)業(yè)務(wù)邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現(xiàn)數(shù)據(jù)綁定接口,變成VO(View Object)。

3. 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刪除的。基本上持久對象生命周期和數(shù)據(jù)庫密切相關(guān)。另外持久對象往往只能存在一個數(shù)據(jù)庫Connection之中,Connnection關(guān)閉以后,持久對象就不存在了,而POJO只要不被GC回收,總是存在的。

由于存在諸多差別,因此持久對象PO(Persistent Object)在代碼上肯定和POJO不同,起碼PO相對于POJO會增加一些用來管理數(shù)據(jù)庫entity狀態(tài)的屬性和方法。而ORM追求的目標(biāo)就是要PO在使用上盡量和POJO一致,對于程序員來說,他們可以把PO當(dāng)做POJO來用,而感覺不到PO的存在。

4、POJO與javabean的區(qū)別

POJO和JavaBean是我們常見的兩個關(guān)鍵字,一般容易混淆,POJO全稱是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻譯成:普通Java類,具有一部分getter/setter方法的那種類就可以稱作POJO,但是JavaBean則比 POJO復(fù)雜很多, Java Bean 是可復(fù)用的組件,對 Java Bean 并沒有嚴(yán)格的規(guī)范,理論上講,任何一個 Java 類都可以是一個 Bean 。但通常情況下,由于 Java Bean 是被容器所創(chuàng)建(如 Tomcat) 的,所以 Java Bean 應(yīng)具有一個無參的構(gòu)造器,另外,通常 Java Bean 還要實現(xiàn) Serializable 接口用于實現(xiàn) Bean 的持久性Java Bean 是不能被跨進程訪問的

JavaBean是一種組件技術(shù),就好像你做了一個扳子,而這個扳子會在很多地方被拿去用,這個扳子也提供多種功能(你可以拿這個扳子扳、錘、撬等等),而這個扳子就是一個組件。

一般在web應(yīng)用程序中建立一個數(shù)據(jù)庫的映射對象時,我們只能稱它為POJO。POJO(Plain Old Java Object)這個名字用來強調(diào)它是一個普通java對象,而不是一個特殊的對象,其主要用來指代那些沒有遵從特定的Java對象模型、約定或框架(如EJB)的Java對象。理想地講,一個POJO是一個不受任何限制的Java對象(除了Java語言規(guī)范)。

5、POJO的擴展

POJO僅包含最簡單的字段屬性,沒有多余的東西,它本質(zhì)上就是一個普通的JavaBean。但是在POJO的基礎(chǔ)上,能夠擴展出不同的對象

a、為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。

b、為POJO增加了數(shù)據(jù)綁定功能之后,POJO就變成了View Object,即UI Model。

c、為POJO增加業(yè)務(wù)邏輯的方法(比如單據(jù)審核、轉(zhuǎn)帳……)之后,POJO就變成了Domain Model。

d、 POJO還可以當(dāng)作DTO使用,等等。

6、實例

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;}}

總結(jié)

以上是生活随笔為你收集整理的POJO模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。