【问题标题】:Should I use my ORM generated objects as my domain object?我应该使用我的 ORM 生成的对象作为我的域对象吗?
【发布时间】:2011-08-25 20:54:32
【问题描述】:

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

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

作为创建新对象的专业人士,我认为当数据库表更改时不会破坏应用程序。

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

【问题讨论】:

  • “用于创建新对象的专业人士.... db 更改不会破坏应用程序”但是如果您的“新”域对象链接到或包装 orm 生成的对象,则链接不会(因此应用程序)也会中断?

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


【解决方案1】:

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

换句话说,你是在倒退。首先获得正确的域模型,然后让您的 ORM 担心如何将它们持久化到数据库中。

【讨论】:

  • +1。当您真正需要独立时,使用 ORM 类作为您的域模型会将您与 ORM 联系起来。
【解决方案2】:

我的回答是,视情况而定。如果您有很多与许多实体相关的复杂逻辑,您应该创建另一层域,但是对于没有逻辑并且只是为您提供数据库端口的对象,不要费心创建一个单独的对象,因为它没有意义。

总结一下,如果一个db的变化会引起域的变化,就不要分离,如果不会,就分离吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多