有关J2EE的流言.ppt
《有关J2EE的流言.ppt》由会员分享,可在线阅读,更多相关《有关J2EE的流言.ppt(43页珍藏版)》请在三一办公上搜索。
1、声明,本课件仅用于北京航空航天大学计算机学院的教学;本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。,有关J2EE的流言,1.关系-对象映射2.EJB的简化3.轻量级框架和容器,1.对象-关系映射,对象-关系映射(Object/Relation Mapping,简称ORM)面向对象的开发方法是当今企业级应用开发环境中的主流开发方法关系数据库是 企业级应用环境中永久存放数据的主流数据存储系统对象和关系数据是业务实体的两种表现形式业务实体在内存中表现为对象在数据库中表现为关系数据,数据持久化(对象-关系映射)方法:Entity Bean会话 bean
2、 和 JDBC JDO(Java Data Object)HibernateiBatis,TopLink,Entity Bean,实体Bean作为企业数据持久性机制具有如下优点:标准化透明的持久性事务支持 基于组件的设计容器管理的服务。EJB 容器使开发人员不必管理常见的企业功能,如安全性、事务处理、连接合用和外部资源管理。,实体 bean 的主要缺点:设计复杂性。容器管理的服务和自动且透明的持久性为整个应用程序设计引入了复杂性。实体 bean 通常也可以通过会话 bean 来访问,这意味着每个事务至少包含两个企业 bean,而通常会更多。构建周期很长。一个 EJB 周期(设计构建测试集成测试
3、部署)所花的时间比可比的 Java 持久性解决方案多两到三倍。响应时间。实体 bean 与 bean 实例的粒度相关。因此,开发人员始终面临选择:要么将 bean 按原样装入,而在别的方面解决响应时间长的问题;要么将数据分解成较小的实体,从而创建更复杂的系统体系结构。资源使用情况。实体 bean 消耗了大量系统资源。,会话 bean 和 JDBC,会话 bean 和 JDBC 组合最受认可的优点如下:设计简单。从体系结构设计观点来看,通过会话 bean 来直接处理数据管理比使用实体 bean 简单得多。细粒度的控制。因为会话 bean 是通用的工作程序组件,所以它们允许开发人员完全控制整个持久
4、性过程,包括高速缓存、持久性、并发性、同步及其它。相反,CMP 实体 bean 不允许开发人员控制持久性机制,而 BMP 实体 bean 仅使开发人员能够定义应发生什么,而不能定义应在何时或什么样的情况下发生。成熟。JDBC 存在了七年左右!而实体 bean 出现至今只有三年多的时间。JDBC 的可靠性和最佳实践对于 J2EE 持久性机制的开发来说是一笔非常宝贵的资产。速度。因为开发人员完全控制在会话 bean 中使用的数据访问机制,所以可以针对某些任务优化数据访问和持久性逻辑。由于直接和有目的的操作,这可以产生极快的响应时间。,缺点如下:实现复杂。虽然这种系统的体系结构设计相当简单,但实际的
5、会话 bean 实现常常十分复杂。如果应用程序的数据需求相当复杂,那么可能就无法实现管理数据库连接、确保数据完整性以及正确处理事务语义这些关键任务。开发人员常常需要实现某种类型的高速缓存同时确保最优性能。构造这种高速缓存机制使该系统的开发和维护进一步复杂化。非固有的事务性。实体 bean 本质上是事务性组件,这些组件具有可配置的事务语义;而会话 bean 没有。将事务语义直接编码到应用程序代码中时,开发人员必须处处小心以确保每个功能的业务规则、流控制和事务完整性都得以保护并且可以容错。在实体 bean 开发中,这些细节都由容器处理。持久性不是自动的或者得不到保证。在实体 bean 操作中,容器
6、处理 bean 状态的持久性,并确保这种数据得到保护,供以后使用。对于会话 bean,将数据保持在安全、长期的数据存储中是开发人员的责任。,JDO(Java Data Object),JDO 提供了面向对象的持久数据存储。开发人员使用 POJO(无格式普通 Java 对象,plain ordinary Java object)来装入和存储持久数据。会话 bean 与 JDO 结合类似于将它们与 JDBC 结合,但 JDO 是以更面向对象且更以 Java 为中心的观点处理该问题的。,会话 bean 和 JDO 提供了许多优点,其中有些来自会话 bean,而其它的来自 JDO,使用会话 bean
7、而不使用实体 bean 进行交付的主要优点有两个:设计简单。从体系结构设计的观点来看,直接通过会话 bean 来处理数据管理比使用实体 bean 简单得多。细粒度控制。因为会话 bean 是通用的工作程序组件,所以它们允许开发人员对整个持久性进程进行完全控制,包括高速缓存、持久性、并发性和同步等。,这两个优点并不是会话 beanJDO 组合所特有的:会话 bean 与 JDBC 的结对也存在这两个优点。但是,JDO 确实提供了一些独特的优点:编码简单。JDO 体系结构向开发人员隐藏了低级别的持久性细节,从而使他们专注于从业务过程的角度管理对象,不至于陷入数据持久性逻辑的琐碎细节中。提高的生产力
8、。JDO 程序员能完全在面向对象的范例内操作。这通常会使开发更简洁、更平滑且更不易出错,因为程序员不用在关系的思想体系和面向对象的思想体系之间频繁地转换。面向对象的持久性。JDO 的面向对象本质不仅提高了开发人员生产力,而且它还考虑到比关系持久性所提供的还要丰富的持久性机制。JDO 并不仅仅使 Java 对象持久;它还透明地处理整个相关对象图的持久性。因此,当实例被持久存储时,它所维护的对其它对象实例的任何内部引用也都被持久存储(除非它们已被声明为瞬态)。JDO 还存储类型层次结构的完整信息,并能根据类型(父类和接口)实现请求,而不是只了解持久实例的特定局部类型。,缺点:JDO 不成熟。JDO
9、 还处于初期。到编写本文时,JDO 1.0 规范的发布还不到一年。其结果是,JDO 社区还非常小,最大且最具威望的 JDO 门户网站可以炫耀的也只是其会员有五千多一点。尽管这些数据并不表示 JDO 是一种差劲的技术,但它们确实表明它还处于前沿。几乎没有几家公司愿意尝试在业务级实现中使用 JDO。会话 bean 不是事务性的。J2EE 客户机不能直接访问 JDO 对象。必须由 servlet 或会话 bean 处理进入请求。因此,尽管很容易将 JDO 对象声明为事务性的,但仍必须使用非事务性组件来访问它们。在将事务语义直接编码到会话 bean 的应用程序代码中时,开发人员必须尽一切可能确保每个功
10、能的业务规则、流程控制和事务完整性都得以保留并是容错的。尽管使用容器管理的事务可以极大地缓解这一问题,但是这样做限制了开发人员对持久性进程的控制,并除去了许多控制事务粒度所产生的体系结构上的灵活性。,Hibernate,Persistent Object是简单的业务实体对象(要被持久化的对象)。通过hibernate被透明的持久化到数据库中。,表person开发一个Person类:它和普通的类没有什么不同,但它符合bean的规范,即为每个属性提供get,set方法 用xml映射文件描述其映射数据库的方式编写(建议命名为:“类名”+“hbm.xml”),并且放置在Person类相同包目录下通过h
11、ibernate api对其持久化,为了运行要配置数据库:以mysql数据库为例子:(只用劳动1次即可)hibernate.properties 在hibernate源程序的根目录可以找到此文件模板,copy到我们的类的根目录。即:“.h”该文件前两项都填好了,只用填数据库连接和username,password,hibernate.dialect jdbc:mysql:/localhost/test?useUnicode=true&characterEncoding=GBK root,2.EJB 3.0,EJB1.0规范是在1997年提出,当时是为了解决CORBA的复杂性而提出的。EJB1.
12、0规范中曾经承诺:EJB将简化开发人员的开发,开发人员不必理会系统底层的事物和状态管理细节,以及多线程,资源池和其他的一些复杂的APIs。EJB将遵循java的一次编写,处处运行的原则,EJB只需要编写一次,就能够不加修改的和不需要重新编译的部署到其他任意平台。,然而在实际应用中,EJB并没有兑现以上承诺。EJB从1.0规范到2.0规范变得越来越复杂,开发一个EJB必须实现一些与业务层无关的接口,还要维护冗长的XML配置文件。同时,各个厂商还加入了一些自己特定的特性,当开发系统时使用了这些特性后,将无法实现各个服务器之间的平滑移植。为此,专家组对原有的EJB规范进行了大刀阔斧的改进,提出了新的
13、EJB3.0规范。,EJB 2.x的复杂性,冗长的XML配置文件EJB的所有配置信息都在XML文件中,如一个EJB的local接口,remote接口和Bean实现类的指定,都是通过ejb-jar.xml中配置来完成的。由于XML文件是基于文本的,所以开发者在编写XML文件的时候往往会犯一些小错误的,例如:大小写,多写,漏写字母等。但是这种简单的错误在编译的时候是不会被发现的,只要在部署的时候才能发现。这样使得调试EJB变得非常的繁琐,降低了开发效率。开发EJB不但要编写ejb=jar.xml文件,还需要一个应用服务器特有的部署描述文件。然而,每个厂商的应用服务部署服务器的配置文件都是不同的,这
14、样就带来一个问题,当把一个EJB应用从一个服务器移植到另一个服务器时,就必须修改相应的配置文件。,EJB的实现类不是POJO(Plain Ordinary Java Objects)在EJB2.x规范下开发EJB,即便是最简单的helloworld程序,我们都至少编写3个类文件,分别是Bean类,Home接口和Remote接口。这些类和接口必须继承或实现规范中所定义的接口,并且要实现一些在业务逻辑中不会使用的回调函数,如ejbCreate(),ejbPassivate()等等。,EJB的复杂调用过程在EJB2.x规范下,标准的EJB调用过程可以描述为:调用者通过JNDI查找想要调用的EJB的h
15、ome接口,使用者通过返回的home接口创建相应的remote接口,通过返回的remote接口才能调用实现业务逻辑的方法,这样的调用过程不仅在远程调用时使用,即使在同一容器的jsp中,甚至在一个ejb调用另外一个ejb时,都要进行同样的调用过程。,实体Bean的局限性在EJB2.x规范中,实体bean分为两种:CMP和BMP。BMP由于需要用户去维护持久化工作和维护EJB状态,开发者需要做很多繁琐工作。与传统的JDBC方式相比,并没有带来太多的便利,同时还要实现不必要的容器组件接口。,EJB3.0规范中主要涉及两个方面的改变:一套以注释为基础的EJB编程模型,再加上EJB2.1中定义的通过布署
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有关 J2EE 流言
链接地址:https://www.31ppt.com/p-5280097.html