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

What is DTO equivalent term for objects returned from DAL?

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

为了避免命名混乱,我想使用 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 或与数据库紧密映射的模型。
  • 这用于持久性需求。

领域Model/Business模型[业务Logic/Services层]:

  • 暴露于 BLL/Service 层的模型。

查看模型[UI层]:

  • 向视图公开的模型。

DTO:

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

POCO:

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

实体:

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

型号:

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

参考以下答案: