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开发;