【发布时间】:2013-05-09 17:12:11
【问题描述】:
我正在创建一个 3 层 应用程序,但遇到了问题。
我有一个数据库,其中包含有关客户的数据和一个代表我的应用程序中的客户实体的类。问题是,我不知道我是否应该在 数据层 或 应用层 中实例化客户实体。
在 应用层 中创建客户实体似乎更正确,因为 数据层 应该只查询数据,但这意味着我需要使用应用层中的“原始/未格式化”数据,而且看起来也不好看。
有谁知道处理这个问题的“正确”方法吗?
【问题讨论】:
我正在创建一个 3 层 应用程序,但遇到了问题。
我有一个数据库,其中包含有关客户的数据和一个代表我的应用程序中的客户实体的类。问题是,我不知道我是否应该在 数据层 或 应用层 中实例化客户实体。
在 应用层 中创建客户实体似乎更正确,因为 数据层 应该只查询数据,但这意味着我需要使用应用层中的“原始/未格式化”数据,而且看起来也不好看。
有谁知道处理这个问题的“正确”方法吗?
【问题讨论】:
数据库保持状态,在可以查询之前必须保存状态。应用程序实例化一个新的客户实体,然后将其发送到持久性进行保存。当应用程序需要数据库中的某个客户时,持久性(通常是存储库)会恢复客户。
请注意,客户是一个业务实体,与客户表或客户 ORM 实体相关但不相同,客户 ORM 实体只是从数据库的角度建模的用于查询优化的数据结构。
【讨论】:
Customer c = new Customer(data); 的东西。或者我应该把那个代码放在 App 层,并使用我从 Data 层得到的数据,像这样Data d = dbConnector.getCustomerData(); Customer c = new Customer(d); ?