问题 问答题

阅读以下关于Java企业级应用系统开发架构的叙述,根据要求回答问题。
[说明]
某软件公司承担了某中小型企业应用软件开发任务,进度要求紧迫。为了按时完成任务,选择合适的企业应用系统开发架构非常重要。项目组在进行方案论证时,项目组成员提出了两种开发思路。
(1)刘工建议采用J2EE 5.0和EJB 3.0进行开发。理由是J2EE定义了标准的应用开发体系结构和部署环境,EJB是J2EE的基础和核心。J2EE 5.0主要目标是简化开发,相比EJB 2.1,EJB 3.0具有很多改进和提高。
(2)杜工建议采用Struts、Spring和Hibenate轻量级开源框架相结合的方式。理由是随着Java开源项目阵营的发展壮大,一些基于POJOs(Plan Old Java Objects)的开源框架被广泛地引入到Java企业应用开发中来,与重量级的EJB框架相比,这些轻量级的框架有很多优点。
项目组仔细比较分析了两种方案的特点、优点和不足之处。认为杜工和刘工的建议都合理,但是从结合当前项目实际情况出发,最后决定采用杜工的建议。

[问题2]
请用200字以内的文字叙述Struts、Spring和Hibernate开源框架特点和结合方式。

答案

参考答案:这是一道要求读者掌握Struts,Spring和Hibenate轻量级开源框架特点和结合方式的简答题。本题所涉及的知识点如下。
(1)由于EJB容器能够很好的处理系统性能、事务机制、安全访问权限,以及分布式运算等问题,基于EJB框架进行开发能保证企业应用平滑发展,而不是发展到一种规模就重新更换一套软件系统,且可以保证开发人员将大部分精力集中在业务逻辑的开发上。采用EJB框架开发的企业应用具有必须继承或依赖EJB容器的特点。EJB充分考虑到了顶级大型项目的需求,使用它几乎能解决企业级应用涉及的所有问题,相应的基于EJB框架也是一个功能复杂的重量级框架。
(2)在基于POJOs轻量级框架上开发的应用程序无须依赖于EJB容器可独立运行,对应于Java企业应用3个层次的轻量级框架技术分别都得到了一定的发展。Struts框架+Spring框架+Hiberhate框架实现了表现层、业务逻辑组件层和持久层的结合。
(3)目前比较流行的开源表现层框架主要有Struts和Tapestry。其中,Struts是基于模型—视图—控制器(MVC)模式的开源框架,主要用于企业应用中表示层的实现。借助于Struts,开发人员可以把主要精力集中在业务处理上,简化遵循MVC设计模式的Web应用开发工作,很好地实现代码重用,提高开发效率。
Straats框架包括:①模型(Model)。在Straats中模型是一个Action类,开发者通过其实现商业逻辑,同时用户请求通过控制器向Action的转发过程是基于由Struts-config.xml文件描述的配置信息的。②视图(View)。视图是由与控制器配合工作的一整套JSP定制标签库构成,利用它们可以快速建立应用系统的界面。③控制器(Contoller),本质上是一个Servlet,将客户端请求转发到相应的Action类。④一堆用来做XML文件解析的工具包。
Struts应用框架由于出现时间早,因此使用相对广泛,很容易找到很多现成的开源功能标签以供使用,以及样例程序可供参考。但是它的组件在页面中显示的粗粒度,以及框架类的限制在很多情况下会表现得过于死板,给表示层的开发会带来一些额外的代码开销。
Tapestry与之不同的是,它是基于组件,而不是面向脚本语言(比如JSP和Velocity)的,组件是由一个定义文件(以XML的格式)、一个HTML模板和一个Java类构成的。
(4)Spring是业务组件层轻量级框架。Spring框架是一个基于IoC(依赖注入)和AOP(面向方面编程)的构架。用户可以通过Spring来利用普通Java对象(POJO)编程,使用依赖注入解析POJO间的依赖性,然后使用面向方面编程(AOP)将服务与它们相关联。采用依赖注入使得它可以很容易地实现Bean的装配,提供了简洁的AOP并据此实现事务管理等,但是它不具备处理应用分布式的能力。Spring的核心要点是支持不绑定到特定J2EE服务的可重用业务和数据访问对象。这样的对象可以在不同的J2EE环境(Web或EJB)、独立应用程序和测试环境之间重用。
Spring框架处于应用服务器和服务库的上方,服务整合的代码属于框架,并暴露于应用开发者。它与应用服务器整合的能力相对EJB 3.0要弱。但是Spting框架模块的可分离配置体现了它优于EJB 3.0的灵活性。
(5)持久层框架主要有Hibernate和各种JDO产品,以及iBATIS等。其中,Hiberhate是一个开源的O/R Mapping框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在应用EJB的J2EE框架中取代CMP,完成数据持久化的重任。相对而言,Hibernate基本优势表现在:使用Java反射机制而不是字节码增强程序来实现透明性;使用简单;映射的灵活性很出色,它支持各种关系数据库,从一对一(1:1)到多对多(m:n)的各种复杂关系。其缺点是限制所使用的对象模型(例如,一个持久性类不能映射到多个表)。
iBATIS是一个简易的SQL Map工具,它是将手工编写的在XML。配置文件中的SQL语句映射成Java对象。使用iBATIS提供的O/R Mapping机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现O/R.Mapping而言基本一致,而对于具体的数据操作,HiberTlate会自动生成SOL语句,而iBATIS则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”O/R Mapping机制而言,iBATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,iBATIS的出现显得别具意义。

单项选择题 A1/A2型题
问答题 简答题