轉帖來自:http://blog.chinaunix.net/u/4764/showart_144878.html
一、PO:persistant object 持久對象,可以看成是與數據庫中的表相映射的java對象。最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作。
二、VO:value object值對象。通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.個人覺得同DTO(數據傳輸對象),在web上傳遞。
三、DAO:data access object 數據訪問對象,此對象用於訪問數據庫。通常和PO結合使用,DAO中包含了各種數據庫的操作方法。通過它的方法,結合PO對數據庫進行相關的操作。
四、BO:business object 業務對象,封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作。
五、POJO:plain ordinary java object 簡單無規則java對象,我個人覺得它和其他不是一個層面上的東西,VO和PO應該都屬於它。
struts中的幾種類型的對象的區分- -
- 業務對象(BO)
1.1 實體業務對象(Entity)
1.2 過程業務對象(Process)
1.3 事件業務對象(Event) - 數據傳遞對象/值對象(DTO/VO)
- FormBean
- 數據訪問對象(DAO)
- POJO(或者可以翻譯爲純Java對象?:))
- 持久化對象(PO)
- BO就是業務邏輯中所涉及的所有的對象,使用這些對象來進行邏輯操作。
EJB中的EB就是一種實體業務對象
EJB中的SB就是一種過程業務對象
BO的可視範圍在控制層和持久層之間。 - DTO主要是用來在不同層之間傳遞數據,是細粒度數據的粗粒度視圖。 關於他和其他對象的差別見上圖。
- FormBean是Html Form映射成的一個對象,主要是用來把Html Form中零散的數據封裝起來,以對象的形式來提供OO方式的操作。
- DAO使底層數據訪問邏輯與業務邏輯分離開,也就是說因爲DAO的存在,才隔離開了數據的訪問邏輯和業務邏輯,DAO從具體數據源中抽取數據,組成POJO,供BO使用,同時對BO傳遞過來的POJO,持久化到數據源中。
- POJO是和PO相區分的一種對象,POJO指的是純Java的對象,他活動於業務層,由JVM來掌管其生死。
- PO是對應於數據源而存在的對象,它往上對應於POJO,往下對應於物理數據源。一般的,ORM提供這種PO,例如hibernate,通過它,使程序員感覺不到PO的存在,數據源自然的映射成了Java中的對象(POJO)。