10.2 实现Hibernate持久化类 10.2.1 设计Domain Object

10.2 实现Hibernate持久化类

本系统打算使用贫血模型定义Domain Object,系统Domain``Object类就是持久化类,这些持久化类仅仅为各属性提供必需的settergetter方法,并未包含业务逻辑方法。所有的业务逻辑方法都由业务逻辑组件提供实现

10.2.1 设计Domain Object

本系统的开发并未完全按OOAOOD的过程进行,而是采用了**传统的信息化系统开发过程,先设计系统的数据库**。因此在系统建模期间,已经得到了系统的E/R图,根据E/R图可以创建数据库的表,数据库表结构建立以后,可以根据表结构编写持久化对象。
虽然这个过程并不完全符合面向对象的设计过程,但因为数据库的建立对于企业信息应用非常重要,往往难以放弃分析系统的E/R关系图,因此E/R图的建立也是非常基础的部分。实际上E/R图也可用于辅助设计Domain Object
本系统一共有如下5个Domain Object对象。

对象 描述
AuctionUser 对应注册用户,包括用户名、密码、Email地址等信息。
Kind 对应物品种类,包括种类名、种类描述等信息。
State 对应物品的状态信息,包含状态名等信息。
Item 对应物品,包含物品名、物品描述、物品备注、物品种类、物品状态等信息。
Bid 对应竞价信息,包含竞价物品、参与竞价的用户、竞价价格等信息。

不仅如此,5个Domain Object之间的关联关系也比较多,它们之间存在着如下关联关系。

  • AuctionUser(用户)与Item(物品)之间存在两种关系:所有者关系和赢取者关系。这两种关系都是1对N的关系,即AuctionUser可以访问他所赢取的全部物品,也可以访问他所拥有的全部物品,因为AuctionUser通过Set类型的变量来分别保存他的赢取物品和所有物品。而Item里则保存AuctionUser的变量,分别是它对应的所有者和赢取者。
  • Kind(物品种类)和Item(物品)之间存在1对N的关系,
    • Kind里以Set类型属性保存该种类下的全部物品,
    • Item里以Kind类型属性保存它所在的种类。
  • State(物品状态信息)和Item(物品)之间存在1对N的关系,
    • StateSet类型属性保存该状态下的全部物品,
    • ItemState类型属性保存它所处的状态。
  • Item(物品)和Bid(竞价信息)之间存在1对N的关系,
    • ItemSet类型属性保存该物品的全部竞价,
    • BidItem类型属性保存它对应的物品。
  • AuctionUser(用户)和Bid(竞价信息)之间也存在1对N的关系,
    • AuctionUserSet类型属性保存该用户参与的全部竞价,
    • BidUser类型属性保存参与竞价的用户。

图10.8显示了5个实体之间的关联关系。
这里有一张图片