1、PO :(persistant object ),持久對象
可以看成是與數據庫中的表相映射的java對象。使用Hibernate來生成PO是不錯的選擇。
2、VO :(value object) ,值對象
通常用于業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要。
PO只能用在數據層,VO用在商業邏輯層和表示層。各層操作屬于該層自己的數據對象,這樣就可以降低各層之間的耦合,便于以后系統的維護和擴展。
Java Bean: 就是一個普通的Java 對象, 只不過是加了一些約束條件。 聲明的 PRoperty 是 private 的, 并且,實現了 Get 和set 方法。
3、DAO :(Data access Objects) ,數據訪問對象接口DAO是Data Access Object數據訪問接口,數據訪問:顧名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間。J2EE開發人員使用數據訪問對象(DAO)設計模式把底層的數據訪問邏輯和高層的商務邏輯分開.實現DAO模式能夠更加專注于編寫數據訪問代碼.DAO模式是標準的J2EE設計模式之一.開發人員使用這個模式把底層的數據訪問操作和上層的商務邏輯分開.一個典型的DAO實現有下列幾個組件: 1. 一個DAO工廠類; 2. 一個DAO接口; 3. 一個實現DAO接口的具體類; 4. 數據傳遞對象(有些時候叫做值對象). 具體的DAO類包含了從特定的數據源訪問數據的邏輯。
4、BO :(Business Object),業務對象層表示應用程序領域內“事物”的所有實體類。這些實體類駐留在服務器上,并利用服務類來協助完成它們的職責。
5、POJO :(Plain Old Java Objects),簡單的Java對象實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來,而且簡稱比較直接.其中有一些屬性及其getter、setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。
6、Entity: 實體的意思。 在訪問數據庫時,才聲明 Entity。 說白了, 一個Entity 就是對應表中的一條記錄。 當 insert 一條記錄時,就是insert 一條 Entity。
一般編寫MVC的數據持久化層是使用DAO模式。所謂DAO,也就是Data Access Object(數據訪問接口)。DAO與業務邏輯層傳遞的是一個實體對象,而這個實體對象是數據庫表在程序中的一個映射。
所以對于數據庫中要操作的每一張表,都要建立一個VO(實體對象)類,一個DAO接口,一個創建DAO的工廠類,以及一個DAO的實現類。而這些基本是一樣的,如果程序需要訪問多個表的時候,需要大量的重復勞動。就有了抽象出來的必要
首先分析DAO模式中的每一部分
VO(對象實體):這個類成員變量與數據庫中每個字段一一對應,同時提供了相應是set和get方法來設置或取得數值。這個類一般是通過IDE自動生成的
DAO(數據訪問接口):這個是業務邏輯層使用數據持久化層服務的一個接口
DAOFactory(工廠類):它提供了創建DAO類的一個方法,目的是更改數據持久化層實現時(比如更換數據庫),不需要對業務邏輯層進行更改,只要再創建一個實現了DAO接口的類,再交給DAOFactory創建對象就可以了。為程序提供了更好的擴充性
DAOImpl(實現類):這個類實現了DAO接口。同時也是代碼最多的類。
從上文分析看出,抽象DAO首先要從實現類下手。在不同的表中,DAO提供的操作基本類似,所以實現類所實現的方法基本相同,不同的地方主要有這樣幾個方面:
1、傳遞的實體類類型
2、實體類的取值賦值方法
3、SQL語句
這些問題第一個解決起來最容易,可以通過Java的泛型解決。第三個也比較容易,可以在創建時傳入字段,執行時生成SQL語句。只有第二個最困難,因為并不知道實體類提供哪些方法,以及方法的返回值和參數列表,怎么樣去調用未知的方法?
新聞熱點
疑難解答