或许过个一年半载,等楼主有了实践经验,会回来继续讨论这个话题。

我的理解,值对象没有仓储,不需要查询。

这个问题,我今天也碰到了,我的问题是:
public class SomeModel{
@ManyToOne
public Money money;
}

注意上面那个 @ManyToOne,请大家看一下这样合适不?
Money 在这个环境中业务分析中就是个值对象,我的问题是要不要加这个@ManyToOne的注释,我们知道加上这个注释,就会另建一个表保存Money,里面当然是Money的金额、币种等信息,如果不加,这个属性存入数据库中是什么形式呢?

2011年01月13日 10:33 "wind13"的内容
我的问题是要不要加这个@ManyToOne的注释,我们知道加上这个注释,就会另建一个表保存Money,里面当然是Money的金额、币种等信息,如果不加,这个属性存入数据库中是什么形式呢 ...

加与不加是向下的问题,也就是存储的问题,如果你不加,能否保存?hibernate或JPA能为你将一个对象自动保存到当前父对象表里吗?如果能,就不加,如果不能,就要加,加了才能存储到表里面去。

值对象与存储无关,值对象和存储之间有仓储Repository隔离了,两个是水火世界,不同的领域。值对象周围都是内存,基于内存,和存储一点关系都没有。

相关:http://www.jdon.com/jivejdon/thread/39781
[该贴被banq于2011-01-13 11:27修改过]

2011年01月13日 10:33 "wind13"的内容
属性存入数据库中是什么形式呢? ...

这些都是向下问题,持久化的是指向指定地方(硬盘)持久数据并可从该地方还原出数据,至于保存形式是另外的事情,是向下问题——技术(战术)问题,可以说这是由数据库自身确定的。根据分层和接口分离原则,我们是不需要知道数据库的持久方式的,只需知道接口就可以使用。若果要了解持久方式才能使用的话,则其技术严重侵入业务。
[该贴被SpeedVan于2011-01-14 09:26修改过]