有个关于ddd value object 和 hibernate的问题

08-06-16 gamex
         

例子如下:一个user实体,一个PhoneNumber值对象
class user{
string id;
string name;
string password;
PhoneNumber phoneNumber;
}

class PhoneNumber{
private String number;
public PhoneNumber(String number){
this.number = number;
}
public String getNumber(){
return number;
}
}

如果用hibernate去做o/r的话。id,name,password都可以轻松的set,那phoneNumber呢?他是通过构造来
做的是否有办法通过有参构造注入?

         

1
banq
2008-06-25 15:52

通过关联关系来映射的。

gamex
2008-07-01 22:17

?怎么做关联,hibernate好像不支持有参注入,可能我没有描述清楚phoneNumber在关系模型当中他是存放在user表当中的一个字段。只是在映射的时候我想把他注入到以下这个结构当中
class PhoneNumber{
private final String number;
public PhoneNumber(String number){
if(!validate(number)){throw ....}
this.number = number;
}
public String getNumber(){
return number;
}
public static boolean validate(String number){...}
}
完整调用例子
User user = new User();
PhoneNumber phoneNumber = new PhoneNumber("0592-8888888");
user.setPhoneNumber(phoneNumber);
然后通过repository(底层是hibernate)存储.问题是怎么通过这种结构存储
怎么消除他们之间的映射失配。
[该贴被gamex于2008-07-01 22:29修改过]
[该贴被gamex于2008-07-01 22:40修改过]

xmuzyu
2008-07-02 16:55

确定User和PhoneNumber的关系,然后用one-to-one,one-to-many,或者也可以将phoneNumber映射为user的字段。具体用。@Embeded,@Embeddalble
[该贴被xmuzyu于2008-07-02 23:46修改过]