我应该使用我的ORM生成的对象作为我的域对象吗?

时间:2011-05-15 11:26:32

标签: orm architecture domain-driven-design domain-object

我的ORM正在生成反映数据库表结构的对象。这个对象是可扩展的,所以我可以添加新的属性和方法。这个对象不包含任何持久性逻辑,所以我猜它们是持久无知的。

我应该将此对象用作我的域对象还是应该为主域模型创建新对象?

作为创建新对象的专家,我会考虑当数据库表发生更改时,它不会破坏应用程序。

作为创建新对象的骗局,我会考虑额外的映射和应用程序中的更多复杂性。

2 个答案:

答案 0 :(得分:5)

而不是使用ORM以与DB看到数据的方式相关的形式从数据库中提取数据,而是创建域对象以实际匹配您的域,然后使用ORM将域对象持久保存到数据库中无论数据库需要什么方式。

换句话说,你正在倒退。首先获取域模型,然后让您的ORM担心如何将它们保存到数据库中。

答案 1 :(得分:1)

我的答案是,这取决于。如果您有许多与许多实体相关的复杂逻辑,那么您应该创建另一个域层,但是对于没有逻辑并且只是作为数据库端口服务的对象,不要费心创建一个单独的对象,因为它没有意义。

总而言之,如果数据库更改会导致域名更改,请不要将其分开,如果不相应,则将其分开。