gpt4 book ai didi

data-access-layer - 从 DAL 返回的对象的 DTO 等效术语是什么?

转载 作者:行者123 更新时间:2023-12-04 13:05:39 38 4
gpt4 key购买 nike

我已经在使用 DTO 通过网络进行数据传输。现在,我还将向 DAL 引入不同的类似 DTO 的类。这是为了避免跨层传递应用程序(业务)对象。

为避免命名困惑,我想使用 DTO 以外的另一个术语,但找不到合适的术语。

从 DAL 返回的对象的 DTO 等效术语是什么?

最佳答案

"What's in a name? that which we call a rose by any other name would smell as sweet." - William Shakespeare



另外,Martin Fowler says关于 POJO:

In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely.



顺便说一句,这并不重要。考虑到您的顾虑以避免因命名相似而造成混淆,您可以从“DataModel”、“Entity”、“POCO”中进行选择。

以下是 很松对通常使用的不同术语的考虑:

关系模型【数据库层】:
  • 数据库、表和字段。

  • 持久性模型[数据访问层]:
  • (通常)属于 ORM 或与数据库紧密映射的模型。
  • 这用于持久性需求。

  • 领域模型/业务模型【业务逻辑/服务层】:
  • 暴露给 BLL/服务层的模型。

  • 查看模型 [UI 层]:
  • 暴露给 View 的模型。

  • DTO:
  • 仅保存状态并用于将数据从一层传输到另一层。
  • 除了序列化之外,没有任何行为/逻辑。
  • 最好是可序列化的。
  • 针对请求层设计;与数据库不相似。
  • 没有自己的身份。

  • POCO:
  • 它只是一个常规对象,没有对任何特定框架的引用,也不遵循它们的接口(interface)或限制。
  • 可以与任何 ORM 一起使用的持久性无知对象。
  • 保存来自数据库的数据。
  • 不一定可序列化。
  • 针对数据库请求而设计。
  • 可能具有验证逻辑或其他与 POCO 紧密绑定(bind)的逻辑(如数据加密/列的唯一性)。
  • 没有 Get、Save 等持久性方法。 POCO 不会自行填充。
  • 可能有自己的身份。

  • 实体:
  • 它必须有自己的身份并且可以唯一标识。
  • 可以使用 DataContext 从数据库加载和保存到数据库的对象。
  • 没有它的 DataBaseContext 就不能存在。
  • 与特定的 ORM 紧密绑定(bind)并实现其规则(默认构造函数、用于创建运行时代理的虚拟属性等)。
  • 实体代表领域模型和领域逻辑。

  • 型号:
  • 用于表示任何保存数据的对象的通用术语。
  • 上面的所有对象,如果我们将其中任何一个放在 MV* 模式中,它就会变成 M​​odel。

  • 引用以下答案:

    https://stackoverflow.com/a/37751345/5779732

    https://stackoverflow.com/a/42801839/5779732

    关于data-access-layer - 从 DAL 返回的对象的 DTO 等效术语是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091178/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com