学习Hibernate in Action读书笔记-CaveatEmptor(1)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

三、Mapping persistent classes(映射持久类)

3.1 CaveatEmptor应用

从这一章开始,开始介绍一个复杂的应用CaveatEmptor,CaveatEmptor是一个在线拍卖系统,它充分的证明了ORM技术和Hibernate的强的功能。下载CaveatEmptor的代码,请到http://caveatemptor.hibernate.org。开始之前,为了让大家更加清楚的理解ORM的思路,我们首先假设CaveatEmptory应用的不存在的,那么第一步我们要做的就是先分析它的业务。

1.分析业务领域

首先,寻找主要的实体类,实体的概念通常应该是很容易被系统中的用户理解的东西,如Payment, Customer, Order, Item, Bid。当然也有一些是有点抽象的,比如PricingAlgorithm,但不管怎么样只要让人一看就明白的就可以了。那么在这个简单的拍卖业务中,共涉及三人实体Category, Item, and User,它们之间的关系如下图:

2.CaveatEmptor的领域模型

CaveatEmptor在线系统拍卖很多种的商品,从电子器件到飞机票。拍卖的过程遵循下面的流程:竞拍者在商品拍卖的有效期内对商品进行出价,直到有效期结束,出价最高者竞拍成功。

分析业务:

**在任何一个商店,商品都是有分类的,并且会把同类的商品放在一个货架上,那么同样,我们的拍卖系统也要分类,以提供用户方便的查询和检索功能。用户可以根据商品类别进行列表查询,或输入商品关键字进行查询。

**竞拍的结果包括一系列的竞拍价,其中最高者竞拍成功。用户的信息包括name, login, address, email address, and billing information.

**web of trust在线拍卖最重要的因素。用户可以在这里建立自已的信誉度,买方可以给卖方评论打分,评论结果是对所有人公开的。

分析图3.2这个模型:

??

**一件商品只能被拍卖一次。如果我们有一个项目实体名为Item,因此我们可以直接把Item和Bid直接关联起来。在一次拍卖中用户可以给其它用户(卖方)写一些Comments,因此Item和Comments还是有关联的。

**用户的Address是单独隔离的,即使一个User只有一个Address。我们允许一个用户拥有多个BillingDetails。不同的订单被作为一个抽象类的子类。

**一个Category里面可能嵌套着很多子类。在图中表现为一个递归的关联,就是自已关联自已。注意,每一个Category虽然有多个子类,但只有一个父类。一个Item至少属于一个Category。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航