一个基于mvc的Web应用程序的生成器外文翻译资料

 2022-11-19 14:11:06

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


外文翻译译文

一个基于mvc的Web应用程序的生成器

Strahinja Lazetic

葡萄牙里斯本里斯本技术大学高级技术学院

Dusan Savic, Sinisa Vlajic, Sasa Lazarevic

贝尔格莱德大学组织科学学院

摘要:本文介绍了一种基于Spring mvcweb应用程序的生成器。生成器是使用Freemarker模板和HibernateTools工具集设计的。生成的应用程序是基于三层架构和MVC软件模式的全功能web应用程序。简要介绍了Spring web应用程序的结构,并详细阐述了设计模板及其在代码生成过程中的作用。该生成器旨在显示定制生成器快速开发的可能性,作为特定应用程序需求的解决方案。

关键字:应用程序生成器;spring;Freemarker;HibernateTools;MVC

1.介绍

如今,信息技术成为发展最快的业务领域之一,许多软件公司能够以同样的质量响应客户需求。项目实现所需的时间和价格(这取决于时间)成为获得工作的关键因素。问题是如何降低这些成本,从而提高生产率并超越竞争。

将应用程序生成器作为问题的解决方案。它们代表自动生成其他软件组件的软件组件。每个生成器使用特定的输入并通过应用定义的规则生成输出。常用的输入是数据模型和模板。输出可以是不同类型的文本文件,如HTML页面、Java源代码文件、SQL脚本和XML文件。

使用生成器比手工编码有许多优点。它大大缩短了应用程序设计所需的时间。生成器通过生成标准化代码来提高源代码的质量,从而减少了手工编码常见的语法错误的数量。此外,更改应用程序代码只需要更改特定模板并重新启动生成器。将生成器开发为高度复杂的软件组件可以激励软件开发人员,并减少在大量类似或重复代码的手工编码过程中出现的单调性[1]。

在设计应用程序生成器方面,有许多论文报告研究和实践。基本上,开发应用程序生成器有两种方法——一种是基于专有软件组件,主要是生成。net应用程序(面向微软技术),另一种是基于java中心的免费软件工具的集成。前一种方法的一些例子是[2], [3], [4], [5], [6]。后方法的例子有缺口,Java应用程序生成器[7],Skyway Builder[8],等等。这些发电机,一般来说,都是基于免费的组件和技术,如EJB和Hibernate[9],[10]模板引擎如FreeMarker)和应用程序开发框架,比如Spring框架[11]和[12]JBoss Seam框架。例如,Skyway Builder是一个基于模板的生成器,是应用程序生成的著名商业解决方案之一。它使用在XML/XSL中编写的模板,并生成功能完备的Spring应用程序,实现基本的CRUD操作。

此外,生成器可能基于独立的或特定的数据模型。例如,基于UML的源代码生成器[13]是一个应用程序生成器,它使用基于UML规范的独立数据模型。

本文描述了一个简单的应用程序生成器的快速开发。它的主要任务是,从一开始就证明自定义生成器的开发是合理的,以防出现短时间限制和特定的项目需求。生成器依赖现有数据库作为代码生成的起点,并使用设计的模板生成功能完整的Spring应用程序。它的开发是半自动化的,因为现有的代码库用于数据模型的生产。

生成的生成器与其他解决方案有很多相同之处:它是基于模板的,它使用Spring框架,它生成实现基本CRUD操作的应用程序。尽管如此,它们之间仍有细微但重要的区别:生成的生成器基于特定的数据库,而不是独立的数据模型,它只保留代码生成过程的基本定制。这两种特性使生成器呈现出简单的、具有成本效益的并且更适合于特定的项目需求而不是更通用的解决方案。

论文分为六个部分。在下一节中,我们将介绍在手工编码过程中出现的一个常见问题。还简要描述了代码生成的现有解决方案。在第3节中,建议的解决方案。

为解决这个问题。介绍了Spring应用程序的结构和与之相关的具体问题,以及使用模板进行代码生成的可能改进。然后,在下一节中,详细描述生成器的体系结构。首先介绍了发电机功能的基本原理,并介绍了最典型模板的设计。在本节的最后,概述了启动生成器的过程。在第4节中,阐述了本文的总结和可能的改进。在最后一部分对所提出的工作进行了总结,并给出了与发电机性能相关的一个简短的统计数据

在撰写本文时,作者在代码生成器开发方面的实践经验作为基础。塞尔维亚共和国内政部的资产管理系统是在Comtrade IT Solutions and Services Ltd[14]中开发的,使用JSF/JBoss Seam应用生成器为系统特定的需求构建。它是内部使用的专用内联网系统,涉及内政部车辆和其他资产的管理,由几百个用例组成。有几百个域对象。首先,生成器的成功比预期的要好:大约60%的用例是使用生成器实现的。

-完全或少量人工干预,约20%。

-通过适度的手工修改,剩下的我们必须手动编码。

2.问题陈述

图1所示。使用N表数据库的三层应用程序的结构

大型公司使用的企业应用程序通常基于数据库作为其数据存储。作为存储公司数据的地方,数据库代表了业务应用程序的核心,也是其开发的起点。这些应用程序通常基于三层架构,可以独立且易于维护应用程序层。图中显示了一个三层应用程序的结构,它使用一个带有N个表的数据库。将一个新表插入到数据库中,需要设计额外的应用程序逻辑类,以及在表示层中处理新表的适当的用户界面页面和控制器。新类的数量可能会有所不同,这取决于表结构和与其他表的关系,以及程序逻辑的需求,这将涵盖表的功能。如果添加了字典表,通常只需要实现基本的CRUD操作。在这种情况下,应用程序生成器将大大减少所需程序代码的设计时间。

在[13]中,作者描述了基于UML规范和XML/XSL模板的生成器。生成器使用现有的UML工具来交付UML功能。它最重要的特点是保留的灵活性。面向目标编程语言。此外,生成器还提供了一个向导,用于定制基于输入参数的代码生成过程。

解决被描述的问题的商业解决方案的一个很好的例子是Skyway Builder,它生成了实现基本CRUD操作的功能完备的Spring应用程序。代码生成过程是基于UML类模型的,该工具提供了与大量UML工具的集成。生成器可作为Eclipse的插件使用。IDE因此启用了不同的向导和Spring应用程序的可视化开发。一个重要的特性是它的模块性,它提供了要生成的应用程序层的选择。

然而,在实际的项目环境中,当应用程序生成的现有解决方案不能满足特定的项目需求时,或者它们在定制的价格或时间上不划算。此外,软件公司的开发团队通常已经定义了它的技术堆栈,这使得使用现有的生成器更加困难。在此基础上,为塞尔维亚共和国内务部的资产管理系统开发了一个JSF/JBoss Seam生成器,该系统由作者的公司Comtrade IT解决方案和服务设计。生成器的设计是为了涵盖应用程序中必须包含的各种特定技术,如Hibernate ORM、EJB3实体类、JBoss Seam框架、Java服务器Faces和Richfaces,这些都是使用Freemarker模板页面启用的。生成器使用数据库作为应用程序生成的起点,并使用HibernateTools功能自动创建数据模型。由于数据库包含大约400个表,其中很大一部分表示简单的字典表,因此生成器在代码生成过程中显示了极大的效率,大大缩短了项目完成所需的时间。

本文的思想是建立在描述实际经验的基础上的,目的是为了显示应用程序生成器的快速开发的可能性,这将完全符合特定应用程序的结构和技术。与基于UML规范的源代码生成器一样,生成器使用模板来生成源代码文件。不同之处在于,它不使用独立的数据模型,也不提供面向目标编程语言的灵活性,而是只生成Java应用程序。发电机产生功能齐全的弹簧应用,实现基本的CRUD操作,与商业Skyway Builder相同。另一方面,Skyway Builder提供丰富的用户界面和更高级的定制,比如生成应用程序层的选择。

这两个事实——生成器基于特定的数据库而不是独立的数据模型,以及有限的自定义和灵活性级别,使得生成器为解决问题提供了最适合、最简单和最有效的解决方案:快速开发具有特定项目需求的应用程序和特定的数据库结构,例如具有大量数据库表的以数据为中心的web应用程序,具有简单和重复的逻辑,例如字典表。

3.建议的解决方案

在设计解决问题的方案时,我们要经过两个步骤。起点是Spring框架。第二步是使用模板来提高开发效率。

构建的Spring应用程序将实现基本的CRUD操作,并使用Hibernate实体管理器的功能与呈现的数据库交互。域对象将在EJB3实体类技术中实现,该技术使用注解来映射到数据库表。DAO模式将启用业务层和持久层的松散耦合。在表示层中,Spring控制器。[11]将用于处理将在JSP技术中实现的web页面[15]。让我们以一个简单的数据库为例,该数据库由两个表组成——雇员和公司与一对多的关系相连(如图2所示)。

图2 Spring web应用程序的数据库模式

他的模式将作为构建示例Spring web应用程序的基础,该应用程序将负责模式管理。

图3表示了管理这个简单数据库的Spring web应用程序的组件。域对象公司和员工的通用组件位于图的中线上。表1给出了这些组件的简短描述。

图3所示的其他组件是特定于域对象的,它们位于图的左边和右边。这些JSP页面用于查看和更新域对象的数据、管理这些页面的Spring控制器、实现业务逻辑的类、DAO类和域对象类。对于每个域对象,必须设计八个Java源代码文件和两个JSP文件。前面的示例基于一个简单的数据库,该数据库只包含两个表。在实际情况下,数据库可能有几百个表。例如,对于包含100个表的数据库,需要设计1000个文件。此外,应该将每个域对象的特定代码添加到描述的公共文件中。

这就是我们设计解决方案的第二步:引入模板。

对于系统的每个组件,将设计一个模板并为其生成服务。这些模板将代表应用程序生成器的基础,将它们与特定的数据库数据合并,从而生成输出文件。在处理之后,每个域对象的一个输出文件将被用于每个域对象的特定组件。此外,将生成每个公共组件的一个输出文件。

图3 Spring web应用程序组件

表1 . SPRING应用程序所有域对象的通用组件的描述

4.总结

应用程序生成的过程是基于自下而上的原理(Bauer, 07),即生成器使用数据库作为生成应用程序层代码的起点。为了生成数据模型,它使用HibernateTools工具集及其逆向工程方法。JDBC配置是工具集的一部分,它使用一个配置文件从数据库读取数据,并使用反向工程创建一个内部Hibernate元模型。然后,HibernateTools导出器,hbmtemplate,使用创建的元模型并加载Freemarker模板来生成输出文件[16],该过程如图4所示。

特定的数据库和Freemarker模板文件表示生成器的输入,输出是Java源代码文件、JSP页面、XML、CSS和.properties文件,这些文件构成了Spring应用程序的一部分。

由于HibernateTools自动创建一个基于指定数据库的元模型,下一步是为特定的系统组件设计模板,这些组件将用于生成这些组件。

A.板设计

在生成器中,使用Freemarker模板语言实现模板文件[16]。Hibernate元模型对象可在模板的范围内使用名称pojo。这些抽象对象在处理带有特定数据模型的模板之后将得到它们的特定值。HibernateTools提供了许多应用于pojo对象的有用方法。在接下来的段落中,将介绍Spring应用程序中最典型组件的模板的设计。

1)域对象

在提交的Spring应用程序中,EJB3实体类用于实现域对象。它们包含允许自动映射到数据库表的注释。对于应用程序中的每个域对象,都需要一个实体类。在生成器中,包含一个模板,用于生成这些类,从而大大缩短了它们的设计所需的时间。这个板已经存在于HibernateTools库中,因此它是这样使用的。在接下来的片段中,将会出现用于生成关系注释的模板的一部分。

生成器使用Hibernate文件休眠。用于调整逆向工程过程的xml。该文件允许定制:

bull;在实体类中映射数据库类型和类型。

bull;过滤数据库表,生成系统的实体类和其他组件。

bull;特定于数据库表和相关类的定制,如表和属性名映射、主键生成策略和关系和外键映射。

bull;将被添加到实体类中的自定义代码生成。

bull;将被添加到实体类中的导入指令的生成。

冬眠的一部分。在以下片段中显示了不包含用于Employee数据库表的应用程序组件生成的xml文件。

2)命名查询

所述Spring应用程序的DAO类调用位于外部xml文件orm.xml中的查询。命名查询在Hibernate查询语言(HQL)中实现。在下一个示例中,给出了公司域对象的SQL select语句的命名查询。

3)spring制器

在Spring应用程序中,有两个控制器

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[23807],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。