繁体   English   中英

持久对象命名约定

[英]Persistence Object Naming Convention

我有一些 POCO,并且有相应的持久性对象可以执行 CRUD。 持久化对象的好名字是什么? 我见过人们使用术语“服务对象”来表示这些,但是当我想到服务时,我想到的是 WCF。 也许“持久性对象”是最好的,但我想听听其他人的想法。

我相信您正在考虑使用数据传输对象

数据传输对象或DTO是引用这些对象的常用方法。

请参阅Martin Fowler的定义: http : //martinfowler.com/eaaCatalog/dataTransferObject.html

一种常见的约定是在将对象持久存储到数据存储区时的存储库模式,因此您希望看到以下形式的命名约定(给定对应的Poco类型):

PocoRepository

如果持久性对象仅用于持久化,则可能在名称中添加“ persistor”(如Person_persistor等)。

我使用以下约定:

  • <YourName> :要保留的域类。 (例如, User
  • <YourName(pluralized)>Repository :持久/存储您的域类的类。 (例如, UsersRepository
  • Persitent<YourName> (可选) :真正持久/存储的类。 (您的存储库在保存之前应使用您的域类并将其映射到此持久模型。)(可以位于PersistentModels文件夹中。)

我相信您正在寻找“数据访问对象”或 DAO 后缀。

假设您的代码中有一个客户的概念,并且您的数据库中有一个客户列,那么您最终可能会得到以下模型:

  • CustomerDAO - 直接映射到客户列的类。 这是您的“持久性课程”。 也许它有一些技术领域,例如数据库索引 id 或序列
  • 客户- 代表您的业务逻辑的类。 也许这缺少一些与您的数据库相关的字段,但有一些额外的与业务相关的字段或方法。 例如,当您存储生日时,它可能有一个 calculateAge() 方法。
  • CustomerDTO - 表示您的 API 向外界公开的内容的类。 这意味着由于隐私原因,它可能不会公开出生日期。 但相反,它可能会公开其他字段,例如“优惠券”,因为它也可能对调用者获取这些有用。 正如上面提到的 Kevin Swiber 并链接到 Martin Fowler

通常,您会看到这 3 个函数由同一个类执行,但这不被视为最佳实践。 除非您正在构建一个非常简单的应用程序,否则将它们分开会更好。 这是否值得付出努力并且不会过度设计/过度复杂化是您必须做出的设计决定。

来源: https : //en.wikipedia.org/wiki/Data_access_object

我相信“实体”是一个常用的传统名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM