當前位置:首頁 » 網頁前端 » 企業級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完成數據模型設計和持久化的過程