当前位置:首页 » 网页前端 » 企业级web开发
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

企业级web开发

发布时间: 2023-01-25 17:34:52

Ⅰ java EE企业级开发与java Web开发有什么区别

这两者之间并没有本质的区别。
一般来说,只要开发的是java web程序(通过浏览器访问web应用),那怕是写了几个页面都可以称之为java web开发;而java EE企业级开发通常用来指更为重量级的开发,如使用EJB、JNDI、JMI等框架或组件。后者在表述上更为专业,也比较正式,当然在售前时也比较能唬住客户。

ps.java EE的本意就是java 企业级环境(以前称为J2EE),这是一个巨大的framework,即使一个很庞大的应用可能也不会用到java EE中的所有技术,一般的,只要如果采用JSP、Servlet就可以说自己在进行Java EE开发,当然也可以说自己做的是java web开发,只是前者更容易让一知半解的人投来敬佩的目光罢了。

Ⅱ javaweb企业级开发用到什么技术

java web开发技术有很多,大概罗列下:

1、后台框架部分,常用spring、struts2等,用来帮助对项目的持久层、业务层、页面控制层的三层架构开发;当然,如果使用spring框架的话,还提供spring security、切面、依赖注入等现成的工具包,提高开发效率并且方便你集成一些第三方的扩展;
2、数据持久层方面,用到的有mybatis、hibernate等持久技术,这些可以帮助快速建立数据库的访问和数据持久化工作,并且方便管理;
3、动态展示,一般用jsp展示。但可以考虑模板引擎技术,如velocity、FreeMarker 等技术,可以帮助你规范化开发页面,提高执行效率;
4、前端框架,有很多,如bootstraps3、angularjs、easyui、jquery等

Ⅲ 为什么企业级web开发,很少用jsp+java呢

应该是jsp/servlet吧,因为java技术做的网站占空间较大,所以一般的小网站都用.net,php开发,只有像银行,购物网站等大项目才用java,因为更安全

Ⅳ Web服务器的种类有哪些各自有哪些优缺点

如今的Web服务器有很多种,大家在做项目的时候根据自己的需求进行灵活的选择。下面我就给大家分享一下目前都有哪些Web服务器以及他们的优缺点。

  • 01

    Apache
    Apache也被叫做httpd服务器,是目前使用最广泛的web服务器,它被应用于各种平台之中。Apache刚开始被推出的时候有很多的缺陷,如今已经被修复的越来越完善,如果你是web服务器的钻研者,我建议你一定要学习一下Apache的使用。
    优点:小巧,灵活,可扩展,稳定。
    缺点:软件开源,所以很多的漏洞可能很容易被人查找到。

  • 02

    Nginx
    Nginx是Linux平台下的优秀Web服务器,我以前用过这个服务器,它让本来运行很慢的应用程序提升了很大的速度。
    优点:压缩率高,支持负载均衡,速度快
    缺点:需要掌握熟练的Linux命令才能应用

  • 03

    IIS
    IIS是微软平台的Web服务器,是针对Windows平台的服务器。它和NET语言非常的搭配,新手掌握起来也比较快。
    优点:安装配置简单,学习起来容易
    缺点:平台适用性单一,安全性有待提高

  • 04

    WebLogic
    WebLogic是专门应用于企业级开发的web服务器,比较常见的是和Java语言搭配,使用起来和Apache差不多,同时它的架构也非常的优秀。
    优点:安全性高,专业性强,耦合度低
    缺点:不容易掌握,需要有一定的专业积累才能熟练应用

  • 05

    Tomcat
    Tomcat是很多Java学习者都非常熟悉的web服务器,一般刚开始学习Java Web开发的人都会使用Tomcat作为服务器进行练习。它既有可视化的操作界面,也有命令语句,是不错的入门级服务器。
    优点:简单易掌握,部署容易,应用广泛
    缺点:扩展性不强,可配置性弱,大并发能力不强

  • 06

    Lighttpd
    Lighttpd是一款开源的web服务器,比较的轻巧,功能也很多。目前在使用率上比较少,还没有推广起来。
    优点:小巧精致,功能强大
    缺点:漏洞较多,学习资源不多

  • 07

    Sun
    Sun是一款针对Solaris的web服务器,应用范围不是很广泛,只应用于Sun公司的相应web产品。另外一般的开发者轻易的用不了这款服务器。
    优点:针对性强,并发性高,速度快,效率高
    缺点:掌握难,适应性不高

  • 08

    Jetty
    Jetty是专门针对Java Web的服务器,它被用来运行Servlet程序,是众多服务器中最局限的一个了。我并不建议大家掌握这款服务器。
    优点:内容简单,容易掌握

Ⅳ 当下流行的 Web 编程语言都有哪些

如果你是一名新晋的 Web 开发人员,那么在选择最佳 Web 编程语言时将面临很多困难。不同的编程语言支持不同的编程技术,而且各有各的复杂性。此外,新的编程语言层出不穷,让人看得眼花缭乱。

在本文中,我们将列出一些最适合 Web 开发的编程语言,作为参考。

一、最佳 Web 编程语言

以下是我们精心挑选的一些最适合Web开发的编程语言,我们会详细介绍选择各个语言的原因。

你不必学习下面所有的编程语言,可以根据实际需要选择最合适的一种。如果你遇到困难或感到困惑,则选择 JavaScript 基本没错。

二、JavaScript

毫无疑问,JavaScript 是最受 Web 开发人员喜爱,且需求最高的语言之一。此外,它也是唯一一种能够同时兼顾构建 Web 应用程序、前端和后端以及移动应用程序 (React Native) 的编程语言。

客户端的 JavaScript 非常安全,且速度很快,它可以在客户端浏览器中快速运行。此外,JavaScript 相对比较容易学习。

JavaScript之所以能够名列最佳 Web 编程语言的榜单,原因如下:

三、Python

Python 也是最佳 Web 编程语言之一。大约44%的软件工程师都在使用这种编程语言,仅次于 JavaScript,位列第二。

在 IT 的各个子领域内,随处可见Python 语言(例如,机器学习、人工智能或视频 游戏 ),尤其是在科学领域。

Python 是一种高级、对初学者友好的编程语言,它具有简单的语法,而且还支持各种库和工具。此外,Python 也可以作为面向对象或脚本语言,并且具有强大的类型,调试速度也非常快。

Python 名列最佳 Web 编程语言榜单的原因如下:

四、PHP

PHP也是一种深受 Web 开发人员喜爱的最佳编程语言。PHP 是一种脚本语言,主要用于 Web 应用、简单的动态站点的服务器端、WordPress、Facebook 或 Flickr 等的开发。PHP Web 开发支持多个免费开源扩展,包括 .NET、Bzip2 或 Apache。此外,它还提供了微软 SQL、MySQL、Server 等不同数据库的访问。

PHP 开发人员可以通过 C 语言编写插件来为 PHP 添加功能。此外,PHP 从第一版开始就一直使用Perl风格的变量,可以有效地组合到 HTML 中。

以下是PHP的一些优势:

五、Java

我们怎么能忘记 Java 编程语言,它是各大公司的流行选择。Java 广泛用于制作企业级的 Web 应用程序。众所周知,这种编程语言非常稳定,很多大公司都在使用它。

如果你正在寻找最佳 Web 编程语言,则可以考虑一下 Java。另外,Java 也广泛用于 Android 应用开发。当今几乎每个企业都需要 Android 应用程序,因为 Android 拥有数十亿的用户。

Google 开发了一款基于 Java 的卓越的 Android 开发框架:Android Studio,对 Java 开发人员来说是一个巨大的良机。

以下是你应该在 Web 开发中选择 Java 的原因:




Ruby也是一种非常适合 Web 开发的编程语言。与Python、PHP一样,Ruby也简单易学,非常适合初学者。

Ruby on Rails 框架可以用于开发网站,因此 Ruby 也是 Web 开发的绝佳选择。

Rails 是一个模型-视图-控制器(model–view–controller,MVC) 框架,为数据库、网页和 Web 服务提供默认的结构。它促进了 Web 标准的使用,例如用于数据传输的 XML 或 JSON,以及用于用户界面的 CSS、HTML 和 JavaScript。

以下是 Ruby 成为最佳 Web 开发语言的原因:




在选择最佳 Web 开发语言时,你需要考虑很多因素。在未确定未来的发展方向之前,不能随意选择编程语言。

你必须做一些功课,详细了解各种语言的功能和特性,还要了解为什么某种特定的语言非常适合 Web 开发。

此外,你还需要结合实际的情况和需求权衡利弊。

Ⅵ 北大青鸟设计培训:node编程开发技术的发展趋势

node技术成为web前端领域的主流开发工具可以说本身就是一个美丽的误会,当初这个技术被开发出来使用的时候主要是为了解决后端的问题才出现的。
今天,航天桥java课程培训机构http://www.kmbdqn.cn/就一起来了解一下node技术的发展历程和未来的发展趋势。
a)Node8进入LTS时代Node.js大的变化是进入Node8时代,它是一个稳定的长期支持版本(LTS),除了性能提升外,还有以下几个要点。
Async/Await支持。
其实在Node.jsv7.6就可以通过flag支持了,在node8里直接落地。
通过Async函数可以更好的进行异步流程控制,远离CallbackHell。
在Async函数里,你可以通过await调用Promise,以及通过co包裹的generator,可以说,向前是完美的Async函数,向后也完美兼容各种遗留代码,称为异步终极解决方案不为过。
ES6模块支持。
通过vue/react、webpack、babel和typescript等火爆发展,es6模块得到了广泛普及和应用,在Node.jsv8.5可以通过--experimental-moles来开启这个体验版特性。
当然,你想在Node.js更早版本里使用ES6模块,可以采用@std/esm模块。
HTTP2支持。
在Node.jsv8.8就开始默认启用了,http2对服务器端推送,多通道复用等特性,能够更好地为浏览器便利,是性能优化的利器。
b)企业级Web开发基础框架除了应用广泛的主流Web框架Koa外,Fastify也是一直劲敌,作者MatteoCollina是Node.js核心开发,Stream掌门,性能优化专家。
Fastify基于Schema优化,对性能提升极其明显。
狼叔认为这是企业级Web开发,他在这里给我们介绍了3个知名框架。
b1)Egg.js阿里开源的企业级Node.js框架Egg发布2.0,基于Koa2.x,异步解决方案直接基于AsyncFunction。
框架层优化不含Node8带来的提升外,带来30%左右的性能提升。
Egg采用的是‘微内核+插件+上层框架’模式,对于定制,生态,快速开发有明显提升,另外值得关注的是稳定性和安全上,也是极为出色的。
b2)NestNest是基于TypeScript和Express的企业级Web框架。
很多人开玩笑说,Nest是像Java开发方式的,确实,Nest采用TypeScript作为底层语言,TypeScript是ES6超集,对类型支持,面向对象,Decorator(类似于Java里注解Annotation)等支持。
在写法上,保持Java开发者的习惯,能够吸引更多人快速上手。
TypeScript支持几乎是目前所有NodeWeb框架都要做的头等大事,在2017年Nest算个知名项目,值得一提。
b3)ThinkJSThinkJS是一款拥抱未来的Node.jsWeb框架,致力于集成项目佳实践,规范项目让企业级团队开发变得更加简单,更加高效。
秉承简洁易用的设计原则,在保持出色的性能和至简的代码同时,注重开发体验和易用性,为WEB应用开发提供强有力的支持。
ThinkJS是国产老牌Web框架,在2017年10月发布v3版本,基于Koa内核,在性能和开发体验上有更好的提升。
整体来看,Node.js在企业Web开发领域日渐成熟,无论微服务,还是Api中间层都得到了非常好的落地。
2017年,唯一遗憾的是Node.js在servless上表现的不太好,相关框架实践偏少。
c)不可不见的Api中间层前端越来越复杂,后端服务化,今日的前端要面临更多的挑战。
一个典型的场景就是在服务化架构里,前端面临的头痛的问题是异构API,前后端联调的时候,多个后端互相推诿,要么拖慢上线进度,要么让前端性能变得极其慢。
进度慢找前端,性能差也找前端,但这个锅真的该前端来背么?Node.js的Api中间层应用很好地解决了这个问题。
后端不想改的时候,实在不行就前端自己做,更灵活,更能应变。
透传接口,对于内网或者非安全接口,可以采用中间层透传。
聚合接口,对异构API处理非常方便,如果能够梳理model,应变更容易。
Mock接口,通过Mock接口,提供前端开发效率,对流程优化效果极其明显,比如去哪儿开发的yapi就是专门解决这个问题的。
除此之外,前端如果想做一些技术驱动的事儿,SSR(服务器端渲染)和PWA(渐进式Web应用)也是非常不错的选择。
d)新领域(深度学习、区块链等)

Ⅶ 基于Jazz技术构建企业级Web2.0应用

Jazz技术平台是一个可伸缩 可扩展的团队协作平台 用于无缝地集成整个软件生命周期中的任务 同时Jazz技术平台也为Web 应用程序的开发和扩展提供了有用的框架 开发人员可以很容易地利用它开发出基于Ajax和REST编程模型的Web 应用 在REST服务端 Jazz提供一个REST服务框架 此框架抽象了处理REST请求的细节(HTTP 数据封装和解封等) REST服务通过Java接口进行定义 该Java接口和相应的基于EMF的存储模型在运行时用于对请求和响应进行封送处理 在Web UI端 Jazz基于开放源代码的Dojo Toolkit 提供一个Jazz Ajax Framework(JAF) 从而简化了Ajax开发

本系列文章首先概述Jazz平台技术架构和编程模型 然后以开发人员熟悉的PetStore为例 详细阐述使用Jazz技术开发企业级Web 应用的全过程 其中PetStore与Jazz技术平台间的依赖关系如图 所示

图 PetStore与Jazz平台依赖关系

通过阅读本系列文章 您将获得以下帮助

· 了解Jazz技术架构和编程模型 理解如何利用Jazz技术进行应用组件开发

· 了解如何通过Jazz提供的基于EMF建模的O R Mapping机制实现数据模型持久化

· 了解如果通过Jazz提供的Process构件来完成业务流程的管理和定制

· 了解如何通过Jazz提供的Ajax框架(JAF) 开发出基于Ajax和REST编程模型的Web 应用

本文是该系列的第一部分 将介绍Jazz平台的技术架构和编程模型 并完成PetStore示例应用开发的第一步——数据模型设计与实现

Jazz技术概览

技术架构

Jazz具有模块化 可扩展的体系结构 Jazz采用Eclipse插件体系 开发者可以通过提供Eclipse bundle对Jazz功能的进行扩展 围绕某一功能而开发的若干个bundle被组织到一个Jazz构件中 目前Jazz的构件如图 所示

图 Jazz Platform

图中的每个构件实现一定的功能 其中Repository和Team Process是必须的 它们构成Jazz的内核 其中Repository负责对数据进行处理 完成O R 映射和数据持久化等 是所有数据驱动型应用必须依赖的组件 目前Repository组件提供了对Oracle DB 和Derby等主流数据库的操作 它通过IRepositoryItemService和IQueryService提供上层API来对数据的增 删 改 查进行统一封装 然后在根据用户的数据库选择和配置信息 翻译成具体数据库厂商支持的SQL再调用底层的JDBC来实现对具体DBMS的操作 从而屏蔽了不同数据库厂商对SQL标准实现不同的问题 为上层应用在不同数据库上的移植提供了解决方案 在本系列文章的第二部分有对Repository组件的详细介绍和使用 Process组件负责Jazz的业务流程管理 它为应用程序提供了AOP的底层支持 在本系列文章的第三部分有对Process组件的详细介绍 这两个核心构件不依赖任何其它构件 因而可以被任何其它构件所依赖

编程模型

基于Jazz平台的开发和与基于众多主流的J EE框架开发类似 都采用MVC的分层模型 值得一提的是Jazz提供了各种不同形式的服务 如Restful服务 RPC服务和Http RAW服务 因此它为不同种类的客户端接入提供了相对统一的基于service的接口 无论是基于Ajax的Web UI还是基于RCP的Eclipse UI都可以统一的使用同一套后端提供的服务 无需做任何修改 它为不同类型的UI接入提供了内在的支持 其模型如下图 所示

图 Jazz Framework

在一个典型的Web应用中 一个Jazz构件可能包含的bundle包括

· Common bundle 用于数据模型和服务接口的定义 类似于MVC的Model层

· Service bundle 用于服务的实现 类似于MVC的Controller层

· Web UI bundle 用于用户界面的实现 类似于MVC的View层

因此Jazz把一个典型的Web开发转化成了Eclipse插件的开发 应用程序通过对不同扩展点进行扩展实现相应的功能并具有很强的重用性和可扩展性 一个Jazz构件可以依赖其它Jazz构件 并调用被依赖构件提供的服务 而应用程序只需要关注对不同服务的调用 服务的实例化和维护由Jazz平台进行提供 简化应用程序开发 体现了控制反转(Inverse Of Control)的思想 有一点需要注意 Jazz构件之间的依赖关系是单向的 不能形成直接或间接的循环依赖(即不能出现A依赖B B依赖A 或A依赖B B依赖C C依赖A)

PetStore设计概览

PetStore示范应用是一个基于Web的电子商务应用系统 它将实现以下几个主要用例 查询宠物 购买宠物 发布宠物 查看交易记录 用例如图 所示

图 PetStore用例图

用户能够通过PetStore平台编辑宠物的相关信息 发布自己欲出售的宠物 可以通过分类的方式浏览别人出售的宠物 搜索宠物信息等 对自己感兴趣的宠物可以进行购买 并查询自己的历史交易记录

在Jazz PetStore示范应用中 我们使用一个Jazz构件PetStore实现其功能 其中包含三个plug in项目

· mon存放数据模型和服务接口申明

· ibm petstore service实现服务接口

· ibm petstore web实现基于JAF的胖客户端UI

下面我们将以PetStore的模型层设计为例 介绍基于Jazz的数据持久化过程

数据持久化

Jazz平台提供了一个基于EMF的O R mapping框架 能够帮助开发人员以EMF建模的形式完成数据库建模和数据持久化工作 开发人员只需根据业务的需要设计自己的实体对象POJO(Plain Old Java Object)以及POJO之间的关系 并在EMF的Ecore模型中为实体对象提供基于Jazz的元数据信息 Jazz的Repository工具会根据建立的Ecore模型自动生成相应的POJO 并把这些POJO映射到数据库的表结构中 从而实现了Ecore模型 >POJO >数据库持久化的目标 因此Jazz的储存模型可以被视为一种有着Jazz特殊格式的Ecore模型

在Jazz中所有的持久化数据都被存储 target=_blank>存储在repository中 每个持久化数据都被称为条目(item) 每个条目都含有自己的itemId和stateId Jazz包含两种不同的数据类型: SimpleItem和Auditable 它们是其它持久化数据类型的超类 SimpleItem用于那些不需要记录历史情况的简单数据 Auditable则记录了数据的历史情况 每次对数据条目的修改都将产生一个新的stateId 所不同的是对于SimpleItem仅仅保留最新的stateId而不保存之前的记录 Auditable的数据不仅保存新的stateId还会把之前每次修改的数据保存起来 每个数据版本都与一个stateId对应 并且可以通过数据的itemId取到这个数据每个版本的历史记录

在我们示范应用中 我们将建立Category Proct Seller三个POJO来存储持久化数据 其中Category用来描述宠物的种类信息 Seller用来描述卖家信息 Proct用来描述宠物 每个宠物都一个种类和一个出售者 为了简单起见 我们不需要保留数据的历史记录 所以采用了SimpleItem作为它们的超类 它们之间的关系如图 所示 注意 Content是Jazz里的内建数据类型 被用来保存图片信息

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 PetStore数据模型

完成了PetStore的数据模型的设计后 下面我们将详细介绍如何基于Jazz提供的O R mapping功能完成数据模型持久化的过程

创建mon bundle

下面我们将完成PetStore开发的第一步 创建mon bundle并完成PetStore数据模型的开发 创建插件项目 如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 创建插件项目

指定项目名称(mon) 使用缺省的location 目标环境设置为OSGi framework equinox 如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 指定项目名称

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 设置插件特征

设置插件特性 这里使用缺省值 如果不需要activator就取消勾选框 如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 设置插件模板

不使用模板 点击 Finish 完成插件项目的创建

设置插件依赖

在plug in manifest editor中添加以下的插件依赖项 如图 所示

· re runtime

· eclipse emf ecore

· eclipse emf ecore sdo

· ibmmon

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 设置插件依赖

在plug in的根目录下创建一个名为src gen的Source Folder 用于将来存放由Ecore模型自动生成的代码

定义模型

New >Source Folder取名为src gen在plug in根目录下同时创建一个名为models的子目录(如图 所示) 然后在其中创建一个新的EMF ecore模型 New >Other >Example EMF Model Creation Wizards >Ecore Model给模型取名为petstore ecore 其余选项保持默认值即可

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 设置生成代码的目录

现在打开这个模型 你将看到一个树形结构的Ecore模型编辑器 首先你需要把Jazz提供的repository ecore加入到petstore Ecore模型的资源引用中 右键点击编辑器里的任意节点 在上下文菜单中选择Load Resource 在选择资源的对话框里填入如下的URI 这个 URI代表repository ecore在你的目标平台中的位置platform:/plugin/ ibmmon/models/repository ecore

注意 如果你的目标平台没有找到repository ecore 你需要手动的把 ibmmon插件手动import到你的workspace中

然后点击OK按钮 这时你将看到repository ecore被成功的引入到Ecore编辑器中 然后选择EPackage节点(初始时是null) 点击右键并选择Show Properties View 你将通过属性编辑窗口来编辑每个节点的属性 我们首先为EPackage节点设置如下属性值 如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 EPackage节点属性

在EPackage节点下添加EAnnotation子节点 (右键点击PetStore EPackage然后选择New Child >EAnnotation) 并给它设置如下的source和详细的keys 和values:

cellPadding= border= > EAnnotation Source teamModel Details Entry Key clientProject Value mon Details Entry Key clientSrcFolder Value src gen

clientProject设为mon表示将来存放生成代码的project clientSrcFolder表示自动生成代码放入的源代码目录 这里选择之前建好的src gen中 目的是把自动生成的代码分隔开进行管理

现在在根EPackage下添加一个名为petstore的子EPackage 并设置如下的属性值:

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 EPackage节点属性

注意 Ns URI的值必须与组件名一致 所以这里必须是 ibm petstore

在这个EPackage下添加一个名为teamPackage的EAnnotation 并给它设置如下的Source值和详细的keys和values:

cellPadding= border= > EAnnotation Source teamPackage Details Entry Key clientBasePackage Value ibm Details Entry Key clientPackageSuffix Value mon model Details Entry Key dbMapQueryablePropertiesOnly Value true

clientBasePackage表示存放生成代码的package前缀 clientPackageSuffix表示存放生成代码的package后缀 这样在加上EPackage petstore 最终生成的代码将会被放入到mon model package里 dbMapQueryablePropertiesOnly设为true表示在生成的代码里 只把queryable标签设为true的属性映射到数据库中并在该持久化类的QueryModel里提供对应的查询字段

至此 你已经完成了建立所有持久化模型都必须经过的步骤 此时的ecore模型应该如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done >

图 ecore模型

然后 我们开始为Category Proct Seller三个持久化类建立对应的EClass 我们将以Category的建立过程为例来说明整个过程 读者可以参照这个过程自行建立Proct和Seller对应的EClass

teamPackage是我们添加EClasses的地方 在EClass里需要定义你希望 存储在Jazz储存库中的持久化对象 对象具有哪些属性 属性都有什么类型和特性 这些都是通过加上一些特殊的Jazz标签完成的 Jazz在以后生成具体的SQL DDL去建表时会去参考这些标签值

首先我们在teamPackage里面创建一个名为Category的EClass 并指定它的ESuper Type为SimpleItem (这里使用SimpleItem而非Auditable 因为我们不需要 保存Category的历史信息)然后我们为Category添加一个名为id的EAttribute到这个EClass中 并设置如下的属性

cellPadding= border= > Name > id EType > EInt Lower Bound > Default Value Literal >

EType信息表示属性的类型 Lower Bound表示最少出现的次数 填 表示这个这个属性是必须的 填 表示这个属性可选 Default Value Literal表示属性的默认值 然后我们还需要往EAttribute id里添加一个名为queryableProperty的EAnnotations注解 并设置如下的source值和详细的keys和values

cellPadding= border= > EAnnotation Source > queryableProperty colSpan= > Details Entry Details Entry Key Key > unique visibility > Value Value true DEFAULT

unique设为true表示id这个属性在数据库表中必须唯一 visibility设为DEFAULT表示这个属性在生成的POJO中可见

然后添加一个名为name的EAttribute到这个EClass中 并设置如下的属性

cellPadding= border= > Name > name EType > EString Lower Bound >

我们还需要往EAttribute name里添加两个EAnnotations注解 首先添加名为queryableProperty的EAnnotations注解 并设置如下的source值和详细的keys和values

cellPadding= border= > EAnnotation Source > queryableProperty colSpan= > Details Entry Details Entry Key Key > unique visibility > Value Value true DEFAULT

再添加名为teamProperty的EAnnotations 并设置如下的source值和详细的keys和values

cellPadding= border= > EAnnotation Source > teamProperty colSpan= > Details Entry Details Entry Key Key > id dbStringSize > Value Value false SMALL

我们还需为Category添加一个名为description的EAttribute 添加过程与name EAttribute类似 在此略去读者只需重复上述过程即可 唯一不同的是把dbStringSize调整为LARGE来获取大于 字节的存储空间

最后我们为Category添加名为image的EReference 并设置如下的属性

cellPadding= border= > Name > image EType > Content Lower Bound > Upper Bound >

Lower Bound设为 Upper Bound设为 表示每个Category只有 或 张图片 如果允许每个种类有多张图片可以把Upper Bound设为 这样在生成的Category POJO里将会有一个图片的List

Category的EClass就建好了 重复上述过程建立Proct和Seller的EClass 建完后 整个ecore模型就建好了 如下图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 ecore模型

接下来我们运行Jazz提供的code gen工具 进行从ecore模型到Java代码的自动生成 在Package Explorer 视图中 右键点击petstore ecore文件然后选择执行Jazz Tools >Generate Component 这样所有持久层的代码都会自动生产到src gen目录中 如图 所示

src= //img ecity cn/img_ / / / jpg border= ffan= done > 图 生成的模型层代码

生成完模型层的代码后 PetStore数据模型层的设计和持久化就完成了 接下来需要进行业务服务层的设计与实现 这将在本系列文章的第二部分中介绍

总结

本文首先介绍了Jazz的技术架构和编程模型 让读者对Jazz技术平台和开发方式有个直观的认识 然后结合PetStore应用实例 详细阐述如何利用Jazz平台的O R mapping完成数据模型设计和持久化的过程