Entity ,Value Object

09-11-18 colinhere
最近做一项目,关于促销的,数据库的表是早已建好的.
想用实体与值对象来建模,以促销和促销类型来举例:
Promotion 与 PromotionType
因为表是人家已经建好的,分别是:Promotion table 和 PromotionType table.
--------------------
promotion
-------------------
id
promotiontypeId
...
-------------------

--------------------
promotionType
-------------------
id
promotiontypenName
...
-------------------
Promotion应该是一个实体,而PromotionType应该是个值对象.
每保存一个promotion,就要给它一个type,如何来建这个模型?

banq
2009-11-20 13:34
实体和值对象都是类,每保存一个promotion,就要给它一个type,这表示promotion和type两个类之间是1:1关联关系,具体采取实体promotion内引用值对象type方式实现即可。

colinhere
2009-11-21 19:24
谢谢 回复。
我也觉得是1对1的关联关系,但是有的同事说是多对一的关系。
徘徊......

colingo
2009-11-22 07:02
如果抛开数据库中的表不讲,觉得 PromotionType应该是Value Object,Promotion是个Entity
但是如果按当前给出一个单独的promotionType 的表,是不是应该把PromotionType也看作是一个Entity呢?

@Entity
public class Promotion {
...
@ManyToOne
private PromotionType type;
}
@Entity
public class PromtionType{
...
}
貌似单向的ManyToOne与单向的OneToOne除了业务意义不同,其他都一样。
抛开DB:
@Entity
public class Promotion{
...
@Embeded
private PromotionType type;
...
}
@Embeddable
public class PromotionType{
...
}
<p class="indent">

[该贴被xinying_ge于2009-11-22 07:56修改过]

fxltsbl3855
2009-11-23 20:48
一个promotion 以后有可能对应多个promotionType,


两个entity,Promotion 和PromotionType
PromotionType是Promotion 的一个属性而已