英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
ICIAFS12 1569624511
通过新标签库支持的JSP高效访问Hibernate
Pubudu Gunawardena
99X Research
99X Technology
Colombo, Sri Lanka thilokg007@gmail.com
摘要:企业Web应用程序开发是近十年来软件开发行业的一个重要分支。由于Web应用程序提供的电子解决方案在效率和准确性方面被证明是有价值的,市场需求增加,Web应用程序开发人员开始转向更快速的应用程序开发框架。因此,新引入了大量的快速应用程序开发框架。对象/关系映射机制被认为在这一领域中起着重要作用,尽管这些框架能够减少软件开发中的大量时间和工作量,但为了提供更好的软件工程解决方案,不断引入新的软件开发框架。由于开发的简单性和开发所需的时间是这方面需要考虑的关键领域,因此应用程序开发框架现在更加注重提供可缩短开发时间的高级接口。本文描述了一种基于Java服务器页面服务器脚本技术的对象/关系映射框架。当数据持久层中实现了Hibernate对象/关系映射机制时,框架的构建为访问Web应用程序的数据持久层提供了一个高级接口。框架由一个JSP标记库组成,它包含基于JSP的自定义标记,这些标记能够操作应用程序的底层数据源。
介绍
企业Web应用程序开发是近十年来软件产品开发行业最重要的领域之一。世界上许多领先的软件工程公司能够开发出各种工具和技术,为客户提供工程解决方案。因此,从高层来看,开发了不同类型的编程语言和软件工程框架来支持企业Web应用程序的开发。在提供企业Web应用程序解决方案方面,Sun Microsystems和Microsoft Corporation是两个领先的竞争对手,而在这场不可估量的竞争中,许多开源组织并没有远远落后于它们。
Java Server页面(JSP)是Sun MyStices作为企业Web应用程序开发的最初方法,而Active Server页面(ASP)通过代表微软的方法起到几乎相同的作用[1]。确实,Sun Microsystems的JSP代表开放源码社区,但PHP和RubyonRails是与JSP相邻的两种Web服务器脚本语言,作为开放源码产品。与所有这些Web服务器脚本语言一起,Web框架通过使软件开发人员更容易进行开发,开始找到进入软件行业的方法。其中大部分是第三方框架,除了微软公司为其语言提供的框架。
Hibernate是由开源社区JBASE开发的第三方对象/关系映射框架之一,以提供基于Java的软件应用程序的数据持久性要求[2 ]、[3 ]、[ 4 ]。Hibernate支持存储和检索独立应用程序以及Web应用程序的数据库事务,即使在这两个平台上都同样支持,Hibernate也在中大型企业Web应用程序中得到了高度应用[3]。
本文所描述的框架是一种使用Hibernate的基本体系结构来支持Java企业版的基于Java服务器页面(JSP)的中小型企业Web应用程序的数据持久性需求的方法。该框架由一个JSP标记库组成,它方便JSP页面开发人员在保持表示层的同时访问应用程序的数据持久层,而不与应用程序/业务层进行通信。标记库为此支持30多个不同的JSP标记,同时为JSP页面开发人员提供对数据存储执行任何类型的数据库查询的最终能力。
第二节详细描述了本文中解决的问题。已开发框架和框架概念的目标在第三节和第四节中定义,而第五节提供了一个完整的框架实现说明。第六节对所开发框架及其特点进行了描述性讨论,第七节、第八节和第九节分别对相关工作、结论和未来工作进行了详细说明。
问题识别
当使用Hibernate作为对象/关系映射模型的中间件设计时,Java方法将与应用逻辑一起使用,以访问持久级数据。利用Hibernate应用编程接口(API)提供的上述Java方法,完成对待查看数据的提取和过滤,并将重要数据存储在数据存储中。在基于JEE技术栈开发的Web应用程序中,JSP作为表示机制,Hibernate作为对象/关系映射工具,数据访问请求由应用程序/业务层代表表示层生成。在与模型-视图-控制器(MVC)体系结构一致的情况下,表示层扮演视图的角色,而应用程序/业务层和数据访问层分别扮演控制器和模型的角色。在高级视图中,应用程序的视图组件通过控制器与模型组件通信来满足其数据需求[5]。
原型应用/试点项目的数据要求
在一个大型企业Web应用程序的原型开发中,需求不是更关注技术堆栈方面,而是关注其业务需求。由于需要更多的专家评审,因此专注于技术架构的大图像将延迟原型应用。简而言之,原型应用程序应该以一种快速而简单的方式开发。
架构无关紧要的中小型软件产品
一个好的建筑设计可能并不总是经验法则。有些中小型软件产品需要一次开发,而不是一次又一次地重新设计。只要体系结构不重要,也不影响所提议的软件应用程序的预期性能,就必须提高开发速度。
JSP开发人员的陡峭学习曲线
所有JSP开发人员都不熟悉编程理论。事实上,最初JSP是为HTML页面开发人员提供服务器端Java语言能力的成功尝试[1]。因此,Java语言的学习曲线对于他们来说是陡峭的[7]。重要的是为他们提供一种访问数据存储的机制,而不必编写Java程序[5],这样它们就可以直接存储和检索数据,同时保持在视图中,与控制器零通信。
考虑到前面提到的两个场景,可以得出这样的结论:简化视图组件的数据需求的机制可以为中小型软件产品的快速开发提供解决方案。另一方面,正如第三个场景所描述的,JSP向HTML开发人员提供服务器开发功能的最初目的可以通过向JSP开发人员提供简化的数据访问机制来增强,而不是通过控制器和模型与数据存储通信。
框架目标
框架的目标是通过识别问题来定义的。由于开发应用程序或试点项目的原型是在项目的初始阶段完成的,原型开发的目的是从业务领域及其需求的角度深入了解最终产品,因此更快速的开发方法是一种理想的解决方案。如问题识别部分所述,如果通过关注应用软件体系结构来开发原型,那么原型开发在开发所需的时间方面会变得缓慢。因此,框架的一个目标是为开发人员提供一个简化的接口来访问持久层数据,当使用JSP作为表示层,Hibernate作为对象/关系映射模型时,这样原型应用程序就可以更快速地开发出来,而不需要MVC模型的硬性和快速性规则。
同时,正如问题识别部分所提到的,小软件产品可能需要一次开发,而不是一次又一次地重新设计。为了方便这些类型的软件应用程序,框架应该通过考虑应用程序数据访问需求的所有可能性,提供一个完整的整体解决方案。实际上,如果可以使用框架访问持久层数据,那么框架的另一个目标是提供一个数据访问接口,该接口能够向JSP开发人员提供所有类型的数据库事务。
另一方面,由于上面讨论的问题之一是关于JSP开发人员学习编程理论的陡峭学习曲线,另一个框架目标是使框架更简单,以便JSP开发人员可以在不了解编程概念和Hibernate查询语言(HQL)查询的情况下使用它。
框架概念
考虑到框架目标,决定框架的最佳方法是开发JSP标记库。这种标记库实现能够提供一个简单的JSP用于访问数据持久层的页级接口。此外,在使用Hibernate O/R映射机制的过程中,JSP开发人员隐藏了复杂性,而JSP开发人员所需的编程语言概念数量将非常少。另一方面,如果标记库能够提供JSP标记来执行所有四个数据库事务(创建、读取、更新和删除),JSP开发人员就不必了解HQL。可以使用定义的JSP标记构建包含数据库选择、限制、投影、聚合和联接的Hibernate查询,这些标记接受一定数量的参数作为标记属性值。
实施
图1说明了Hibernate体系结构的高级概述,以及开发的框架如何适合它,以便为应用程序类提供高级接口。在为基于JSP的Web应用程序提供功能的情况下,应用程序类被视为JSP页面。通过简化HibernateAPI的使用,框架位于应用程序类和Hibernate层(O/R映射层)之间。所有Hibernate API方法对开发人员都是隐藏的,而标记库的JSP标记对开发人员是可见的,因此这些标记可以用于在数据存储上执行任何类型的数据库事务。
标签库的标签是由Java Servlet规范中提供的简单标记处理程序API实现的。在开发自定义标记时,所有三种可用的方法都被考虑在内,与经典的标记处理程序相比,简单的标记处理程序更适合开发,而标记文件不能用于实现框架要求[8]。
Hibernate标准API用于满足通过Hibernate API访问数据存储的要求。选择Hibernate标准API的原因是它在应用程序运行时通过Java语言方法建立自定义数据库查询的能力。
图2 标签的组成部分
图2说明了标签的主要组成部分。由于简单的标记处理程序是选择的标记处理机制,因此标记库描述符文件用于JSP文件和标记处理程序类之间的通信。标记的属性值将被提取并传输到标记处理程序类以进行进一步处理。属性值到标记处理程序类属性变量的映射由标记库描述符处理,而标记处理程序类负责数据持久性事务。简而言之,标记处理程序类将根据标记的要求,使用Hibernate标准API存储或检索数据。
高级的框架
开发的框架由32个JSP标记组成。它由8个JSP标记组成,这些标记充当父标记,而另外24个标记被认为是子标签。父标记不能与任何其他标记一起使用,其中as-child标记必须与父标记一起使用。换句话说,父标记的职责是作为大数据集检索数据,而子标记的设计目的是通过应用限制和投影来过滤大数据集。图3显示了标签的层次结构,它表示标签的父子关系。箭头指向父标记,而相反的箭头表示可以与特定父标记一起使用的子标记。
图3 标签层次结构
相关工作
定义的框架可以进行比较和对比使用现有的ASP.NET Web脚本语言。图4显示定义的框架如何实现ASP.NET基于JSP Hibernate的开发的类似功能环境。
图4 高级Famework与ASP.NET数据访问功能
knystautas[9]提供了一个小的标签库,其中包含9个标签,可以在JSP页面内操作数据库数据。这个框架是在2003年使用JSP 1.2和Hibernate2.1规范开发的。在这个标签库中发现的问题是,它期望标签用户对HQL有一定的了解,因为HQL查询应该写在标签主体中,并与其他标签属性一起传递给标签处理程序类。这是HQL学习曲线陡峭的一个主要缺点。简而言之,标签库的预期简单性并没有完全实现。
长谷川等人的研究[3]描述了用于生物信息学网站构建的JSP标记库实现。这个标签库的目的是设计和移植面向生物信息学的网站内容。
即使所有这些工作都解决了本文描述的框架所提供的相同功能,当Hibernate被用作O/R映射机制时,除了Knystautas的框架之外,没有一个工作专注于为JSP开发人员提供服务,尽管它有陡峭学习曲线的主要缺点。
结论
本文演示了当Hibernate用作O/R映射机制时,JSP标记库在帮助访问基于Web的应用程序的数据持久层方面的能力。据我所知,这是开发JSP标记库的第一种方法,它需要对编程概念一无所知,并且使用Hibernate查询语言。换句话说,它解决了简化JSP标记库的问题,这样JSP开发人员就不必了解使用标记库的编程概念;这是一个以前任何工作都没有解决的问题。另一方面,框架是开发原型应用程序/试点项目的完美解决方案,快速应用程序开发在其中发挥着重要作用。除了使用简单之外,标记库还提供32个JSP标记,这些标记能够完成任何类型的CRUD操作,包括数据库表联接。
数据库表概念中对基础知识的要求是该框架的一个局限性。换句话说,为了使用JSP标记来存储或检索数据,JSP开发人员应该对数据表如何在数据库中保存数据有基本的了解。另一个限制是缺少对创建子查询的支持。
该框架的一个特点是,它没有对传统的数据持久化方法设置任何障碍,即通过控制器组件与MVC架构的模型组件之间的通信。相反,框架允许从视图组件到模型组件的直接通信,因此应用程序开发人员仍然可以使用传统的数据持久性方法,同时具有新框架的优势。因此,必须强调的是,开发的框架不会对MVC体系结构的传统通信方法造成任何限制。
未来工作
由于当前框架中没有实现支持在数据源上构建和执行子查询的主要功能之一,因此可以通过增强其功能将其添加到当前标记库中。可以进行性能测试来测量开发的标签的性能,重点是数据检索时间、数据存储时间等。之所以进行性能测试,是因为它可以作为优化当前标签的另一个起点,用不同的系统架构对其进行重构,以使标签能够更快地执行。在具有大量数据的数据库下。
参考文献
- H. Bergsten. Java Server Pages. OReilly Media, 2003, pp. 1-28 <li
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[20246],资料为PDF文档或Word文档,PDF文档可免费转换为Word
</li
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。