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

发布于 2024-11-07 07:51:13 字数 210 浏览 0 评论 0原文

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

我应该使用这个对象作为我的域对象还是应该为主域模型创建新对象?

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

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

My ORM is generating objects reflecting the database table structure. This objects are extensible, so I'm able to add new properties and methods. This objects do not contains any persistence logic,so I guess they are persistant ignorant.

Should I use this object as my domain objects or should I create new objects for main domains model ?

As a pro for creating new object I would consider that when a database table changes it won't break the application.

As a con for creating new object I would consider the additional mapping and more complexity in the app.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小鸟爱天空丶 2024-11-14 07:51:13

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

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

Instead of using your ORM to pull data out of the DB in a form that relates to how the DB sees the data create your domain objects to actually match your domain and then use your ORM to persist your domain objects into the database in whatever way the DB needs.

In other words, you're doing it backwards. Get the domain model right first and then let your ORM worry about how to persist them to the DB.

两人的回忆 2024-11-14 07:51:13

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

综上所述,如果数据库更改会导致域更改,则不要分离,如果不会,则分离。

My answer is, it depends. If you have a lot of complex logic assosiated with many entities you should create another layer of domain, but for the objects that got no logic and just serves you as a db port, don't bother to create a separate object cause its meaningless.

To sum up, if a db change will cause domain change, don't separate if it won't, separate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文