由於是創業公司,開發人員較少,所以公司臨時決定讓幾個C的程序猿臨時客串Java。所以避免不了有很多基礎問題,今天就有兩個人都問我,JavaBean和POJO的區別,我可按照自己的理解給他們大致說了下,可是仔細一推敲發現自己好像沒有那么透徹的講解很清楚,就查了下資料,記下了一些筆記和理解。
1.JavaBean
JavaBean(官方解釋)是可復用的Java組件,嚴格遵循Sun定義的規范要求,JavaBean是一個標准,開發者可以直接復用別人寫好軟件組件而不必理解它內部的工作機制。簡單來說一個JavaBean應該有下面幾個特點,
>類應該是public的
>屬性應該private的,對於屬性值的訪問應該是要通過getXX,setXX,isXXX方法,isXXX是用於檢查元素的值是否是Boolean的。
>該類應該有一個無參的構造函數,元素值的初始化要通過setXXX方法。
>這個類應該是實現了Serializable 接口(java.io.Externalizable
),這個是為了持久化存儲的需要。
例如:
package com.example; import java.io.Serializable; public class Bar implements Serializable { private String name = null; private boolean flag = false; public Bar() { } public String getName() { return this.name; } public void setName(final String name) { this.name = name; } public boolean isFlag() { return this.flag; } public void setFlag(final boolean flag) { this.flag = flag; } }
2.EJB(Enterprise Java Bean)
EJB是運行在一個J2EE服務器上的Java類,它用於處理業務邏輯的,應該是這樣的:
>有狀態(Stateful)
>無狀態的(Stateless)
>實體(Entity)
>消息驅動Bean(Message Driven Beans)
舉例(無狀態Bean):
@Stateless public class EmployeeServiceBean { @PersistenceContext EntityManager em; public void addEmployee(Employee emp) { em.persist(emp); } } Read more: http://www.javaexperience.com/difference-between-pojo-javabean-ejb/#ixzz3otv2sKDE
說明:因為EJB2.0和EJB被要求是實現EJBobject 接口和指明EJB的部署類型,所以在EJB3.0中引入了注解來簡化開發步驟。
3.POJO(Plain Old Java Object)
一個POJO沒有要求去實現了一個接口或者繼承一個類,也沒有任何的指導信息。POJO最大的不同之處就是它和EJB無關。Java是一個簡化的JavaBean,我們之所以叫它是是簡化的bean是因為它只用於裝載數據而不用業務邏輯的處理。一個持久化的POJO就是PO,如果用於展示層那么它就是VO .
4.擴展
4.1.PO(persistant object ):持久化對象
持久對象,可以看成是與數據庫中的表相映射的java對象。最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作。
4.2.VO(Value Object)
一個值對象就是一個含有值的對象,比如java.lang.Integer.VO:通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.個人覺得同DTO(數據傳輸對象),在web上傳遞。
4.3.DAO:data access object
數據訪問對象,是一個sun的一個標准j2ee設計模式 .此對象用於訪問數據庫。通常和PO結合使用,DAO中包含了各種數據庫的操作方法。通過它的方法,結合PO對數據庫進行相關的操作。夾在業務邏輯與數據 庫資源中間。配合VO, 提供數據庫的CRUD操作。
4.4.DO(Domain Object)
領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。
4.5.VO(View Object)
視圖對象,用於展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。
4.6. BO( Business object)
用於調用DAO的業務邏輯類,並且將PO和VO聯合起來進行業務操作。
4.7.DTO(Data Transfer Object)
主要用於遠程調用中的傳輸對象。比如說,一個100個字段的表就對應於PO中的100個屬性,但是我們的接口只需要10個字段。那么我們就可以將只含有十個字段的DTO傳遞給客戶端使用。這不會向客戶端暴露表結構,一旦它和接口關聯起來,那么它就是VO了。