10.2 实现Hibernate持久化类
本系统打算使用贫血模型
定义Domain Object
,系统Domain``Object
类就是持久化类,这些持久化类仅仅为各属性提供必需的setter
和getter
方法,并未包含业务逻辑方法。所有的业务逻辑方法都由业务逻辑组件提供实现。
10.2.1 设计Domain Object
本系统的开发并未完全按OOA
、OOD
的过程进行,而是采用了传统的信息化系统开发过程,先设计系统的数据库
。因此在系统建模期间,已经得到了系统的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
的关系,State
以Set
类型属性保存该状态下的全部物品,Item
以State
类型属性保存它所处的状态。
Item
(物品)和Bid
(竞价信息)之间存在1对N
的关系,Item
以Set
类型属性保存该物品的全部竞价,Bid
以Item
类型属性保存它对应的物品。
AuctionUser
(用户)和Bid
(竞价信息)之间也存在1对N
的关系,AuctionUser
以Set
类型属性保存该用户参与的全部竞价,Bid
以User
类型属性保存参与竞价的用户。
图10.8显示了5个实体之间的关联关系。