一、Bean
對於Bean而言,我的理解是只要是Java的類的就可以稱為一個Bean,更用在Spring上,被Spring管理的對象就可以將其稱作為Bean。
它不僅僅可以包括對象的屬性以及get,set方法,還可以有具體的業務邏輯。
二、Entity
這個最容易理解,其特點是:數據表對應到實體類的映射
三、Model
Model是MVC中一個概念,可能不和Entity一一對應,因為展示在View層中數據可能是一個Entity的精簡,也可能是多個Entity的組合。一句話概括:Model是一個高度優化組合或者精簡后的一個用於在View層展示數據的對象。
四、POJO
簡單Java對象,貌似沒有經常提到或作為類的后綴存在,難道是因為其名字太長?
其特點是:除了屬性和get、set方法外不包含具體的業務邏輯方法,這個和上文表述的Model很相像,和Entity區別在於沒有和數據表中字段一一對應。
總結:實際上entity與pojo與javabean都是JAVA對象,可能有的地方叫法不同,實際上功能都是一樣的,唯一不同是用於范圍不同,請看下面詳細分析。
Java Bean、POJO、 Entity、 VO , 其實都是java 對象,只不過用於不同場合罷了。
按照 Spring MVC 分層結構:
JavaBean: 表示層 (Presentation Layer)
Entity: 業務層 (Service layer)
Dao: 數據訪問層 (data access layer)。
Entity接近原始數據,Model接近業務對象~
Entity:是專用於EF的對數據庫表的操作,
Model:是為頁面提供數據和數據校驗的,所以兩者可以並存
POJO:POJO是Plain OrdinaryJava Object的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業務邏輯的協助類。
POJO實質上可以理解為簡單的實體類,顧名思義POJO類的作用是方便 程序員使用數據庫中的數據表,對於廣大的程序員,可以很方便的將POJO類當做對象來進行使用,當然也是可以方便的調用其get,set方法。POJO類 也給我們
今天突然也在這個問題上迷惑了。上網搜搜,算是明白了一些,姑且記下來,無論對錯:
JavaBean: 先說JavaBean,JavaBean更多的是一種規范,也即包含一組set和get方法的Java對象。
POJO: 普通的Java對象,對於屬性一般實現了JavaBean的標准,另外還可以包含一些簡單的業務邏輯(方法)。
PO: POJO在持久層的體現,對POJO持久化后就成了PO。PO更多的是跟數據庫設計層面相關,一般PO與數據表對應,一個PO就是對應數據表的一條記錄。
DAO: PO持久化到數據庫是要進行相關的數據庫操作的(CRUQ),這些對數據庫操作的方法會統一放到一個Java對象中,這就是DAO。
BO: POJO在業務層的體現,對於業務操作來說,更多的是從業務上來包裝對象,如一個User的BO,可能包括name, age, sex, privilege, group等,這些屬性在數據庫中可能會在多張表中,因為每一張表對應一個PO,而我們的BO需要這些PO組合起來(或說重新拼裝)才能成為業務上的一個完整對象。
VO(Value Object/View Object): POJO在表現層的體現。 當我們處理完數據時,需要展現時,這時傳遞到表現層的POJO就成了VO。它就是為了展現數據時用的。
DTO(Data Transfer Object): POJO在系統間傳遞時。當我們需要在兩個系統間傳遞數據時,一種方式就是將POJO序列化后傳遞,這個傳遞狀態的POJO就是DTO。
EJB(Enterprise JavaBean): 我認為它是一組"功能"JavaBean的集合。上面說了JavaBean是實現了一種規范的Java對象。這里說EJB是一組JavaBean,的意思是這一組JavaBean組合起來實現了某個企業組的業務邏輯。這里的一組JavaBean不是亂組合的,它們要滿足能實現某項業務功能的搭配。找個比方,對於一身穿着來說,包括一頂帽子,一件衣服,一條褲子,兩只鞋。這穿着就是EJB,其它的就是一個JavaBean。。。。后續。。。。
原文鏈接:
http://blog.sina.com.cn/s/blog_aed19c1f0102wp1q.html
https://blog.csdn.net/a909422229/java/article/details/70792203