JavaEE 分為:
| 輕量級Java EE |
Spring, Hibernate為核心,無須應用伺服器支援;只要在Tomcat、Jetty等Web伺服器上即可運行良好 |
| 經典Java EE |
以EJB3為核心,需要EJB容器支援,需要在JBoss、WebLogic、WebSphere等應用伺服器中運行; 前端MVC架構優先考慮JSF,JSF參考實現:JSF RI ; JSF的另一個實現:MyFaces架構 |
| JSF(Java Server Faces) RI(Reference Implementation) |
ADD: 對於採用EJB3為核心的經典Java EE來說,採用JSF作為前端MVC架構更合適,有兩點理由: 1 , JSF的managed-bean可以非常方便地接受依賴注入,從而以松耦合的方式來調用容器中的Session Bean(商務邏輯組件); 2 , JSF規範本身就是Java EE規範之一,有純正的血脈;目前JSF有兩個實現:Sun公司提供的JSF RI實現 和 Apache提供MyFaces實現; 常用的企業級伺服器: GlassFish:Sun官方提供,開源,支援Java EE 6,目前未大規模使用。 WebSphere:IBM提供。 WebLogic:原為BEA公司開發,先歸到Oracle旗下,實際項目使用較多。 JBoss:開源,免費。 |
經典java EE和輕量級java EE分層類似,優勢也類似,只是實現的方法不同;
| 輕量級Java EE |
資料庫:提供持久化服務--> Domain Object層:封裝 -->DAO層:提供資料訪問服務 -->商務邏輯層:提供商務邏輯實現 -->MVC控制器層 :顯示 -->表現層 |
| 經典Java EE |
資料庫:提供持久化服務--> Entity層(由JPA的Entity充當):封裝 --> |EAO層:提供資料訪問服務 -->商務邏輯層:提供商務邏輯實現|--> MVC控制器層 :顯示 --> 表現層 tips:商務邏輯層和 EAO層由Session Bean充當; |
Entity對象:抽象了系統的物件模型;通常這些對象的狀態都必須儲存在資料庫裡;因此,每個Entity映射到一個或多個資料庫表;
EAO組件:Entity Access Object ,也被稱為 實體訪問對象,通常採用Session Bean來實現;
tips : EAO就相當於輕量級JavaEE應用中的DAO對象,一樣提供對系統Entity(實體)的增、查、修、刪等操作,對應於資料庫表的CRUD(Create、Retrieve、Update、Delete)等原子操作。
JPA規範中的Entity本身就是POJO(普通的、傳統的java對象),因此有人認為可以直接使用Entity作為DTO(Data Transfer Object,資料轉送對象)使用,因此把DAO組件更名為EAO組件;
商務邏輯層組件:實現系統的商務邏輯,通常使用Session Bean來實現;一般來說,一個商務邏輯方法對應一次使用者操作;一個商務邏輯方法應該是一個整體的,要對商務邏輯方法增加事務性;商務邏輯方法僅僅負責實現商務邏輯,不應該進行資料庫訪問;因此商務邏輯組件中不應該出現原始的Hibernate、JDBC等API;
環境:
伺服器安裝前需要先配置經典JavaEE應用所需要的環境,此時需要安裝Java EE SDK(Java Enterprise EditionSoftware Development Kit);
JavaEESDK是專門為企業級應用提供的一個開發套件,它裡面已經包含了許多開發企業級應用所需要的“組件”,它為J2EE的開發提供了一個便利的開發平台,所以它就直接叫JavaEE SDK了;
目前,很少直接 用Java EE SDK開發;