技术开发 频道

基于Jazz技术构建企业级Web2.0应用(1)

    PetStore设计概览

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


    图 4. PetStore用例图

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

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

    · com.ibm.petstore.common 存放数据模型和服务接口申明

    · com.ibm.petstore.service 实现服务接口

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

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


    图 5. PetStore数据模型

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

0
相关文章