传统J2EE架构刚 推出的时候,业界都深信不移,这就是通信企业开发的正确途径,然而随着业界对传统J2EE架构使用的深入,问题就渐渐暴露出来了,其
问题主要体现在EJB规范上,归结起来主要有以下几个方面: (1)EJB采取的组件模犁对系统具有很强的“侵入性”。
为了享用EJB容器提供的底层服务,业务组件必须声明EJB的接口,使开发者无法专注于业务逻辑本身。
(2)由于EJB是运行在EJB容器中的,导致它很难被测试。
调试不仅复杂,而且耗时,造成了开发效率的降低。
(3)CMP容器管理持久化需要在Bean类里定义相应需要做持久化处理的字段的变量,并且在部署EntityBean的时候把需要做持久化的信息部署到容器或者应用服务器上,这样的确会省很多工作量,但是成本会很高,而且开始定制的需要持久化的字段后来要改变的话会很不灵活,功能也不强大【4】。
(4)EJB并不比POJO拥有更清晰的多层体系结构,它的耦合度很高,即便系统只需要很少的几项服务,也不得不一股脑接收EJB本身所有的基础服务,从而使得系统的性能降低、复杂度变高。
基于传统J2EE架构的上述缺陷,许多专家和开源组织试图开发出一些轻量级、灵活的J2EE框架,来替代传统的EJB架构。
轻量级框架鼓励人们使用简单原始的Java对象(POJO)编程,而不是类似EJB的重最级面向组件模型。
轻量级设计模式在对象和集成服务之间进行松散耦合,而无需艰苦地编写业务逻辑或领域模型15〕。
轻量级框架具有如下几个核心思想: (1)控制反转。
也叫做依赖注入,这是目前所有的轻量级容器的基本思想,它可以让轻量级服务器通过统一的XML文件来配置管理对象和它们之间的依赖关系,通过普通的JavaBean属性或构造函数来操作框架管理对象,IoC容器负责解析这些类之间的关系。
它的好处在非侵入性,这是轻量级容器区别与重量级容器(EJB)的显著特性之一。
(2)面向方面的编程。
这往往与拦截器思想同时出现。
它可以向一个现存的Java对象注入所提供 3 东南大学硕十学位论文的服务,如权限控制、
日记记录等,而被注入服务的对象却不川作任何修改。
这使得开发人员在创建业务逻辑时,可以抛开繁琐的细节(却往往是不可忽略的),专注于完成业务逻辑,而在最后通过组装的方式即可将这些细节功能补上。
(3)透明持久性。
透明持久性是指使用ORM框架技术将关系数据库的关系数据与面向对象编程语言(如Java)的类对象相关联,让开发人员可以使用面向对象的思维进行开发,而不受底层关系数据库的打扰,集中精力实现业务逻辑。
根据上述原因,本文放弃传统的重量级的J2EE开发框架EJB,而选用了目前较为流行的轻量级框架组合Struts+Spring+Hibernate+Ibatis+Ajax(Dwr)。
2.3Hibernate框架概述 Hibernate是一个提供数据库服务的中间件,在本项目的数据持久层选择了Hibernate框架具有如下几点优势: ①减少乏味的代码.Hibernate框架封装了数据库持久层的大多数技术细节,如数据库连接的打开/关闭、事务管理等。
②更加面向对象的设计.开发者可以通过ORM(ObjectRationalMapping)将系统中的域 对象(DommnObject)自动映射到各个数据库表,从而在编码中只需关心Object的相关属性,而无需再纠缠于JDBCResultSet(结果集)中的字段刑数据。
③更好的性能,Hibernate框架提供了优秀的性能优化机制,如内置的数据库连接池支持,数据缓存等。
优化机制的综合使用提升了系统性能。
开发者无需关心其中复杂的实现细节即可享用它所带来的性能提升。
④更好的移植性,基于Java开发系统,具有跨平台特性。
但由于数据库之间的差异,系统在数据库平台之间的迁移却遇到阻力。
Hibernate框架在设计上的良好隔离,提供了对不同数据库的良好支持。
开发者只需简单的修改其配置参数,即可实现底层数据库的切换【6】。
在项目中使用Hiber