有个关于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修改过]