作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从DDD来看,我们将数据库抽象为我们要操作的各种模型,并将其视为模型所在的存储库。然后,在其之上添加数据层和服务/业务层。我的问题是,这样做是否会通过建立胖模型而导致数据传输效率低下?
例如,假设我们有一个系统在屏幕上显示客户的发票。
从OOP的角度来看,我们可能最终得到一个看起来像这样的对象:
class Invoice {
Customer _customer;
OrderItems _orderitems;
ShippingInfo _shippingInfo;
}
class Customer {
string name;
int customerID;
Address customerAddress;
AccountingInfo accountingInfo;
ShoppingHistory customerHistory;
}
(for the sake of the question/argument,
let's say it was determined that the customer class had to
implement AccountingInfo and ShoppingHistory)
最佳答案
由于良好的对象关系映射器可以延迟加载关系,因此您将撤回客户的发票,但忽略其会计和购物历史记录。如果您不使用对象关系映射器,则可以自己滚动。
通常,您无法在客户端中执行此操作,因为您已经越过了事务边界(结束了数据库事务),因此由服务层来确保已加载正确的数据。
在服务层的单元测试中,测试可用的正确数据(但不是太多)通常是一件好事。
关于performance - 胖域模型=>低效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1148094/
从DDD来看,我们将数据库抽象为我们要操作的各种模型,并将其视为模型所在的存储库。然后,在其之上添加数据层和服务/业务层。我的问题是,这样做是否会通过建立胖模型而导致数据传输效率低下? 例如,假设我们
你好,对不起我的英语 我有一个类别列表和与每个类别关联的产品cats = [cat1, cat2, cat3] prod = { cat1 = [a, b, c] cat2 = [d, e, c]
我是一名优秀的程序员,十分优秀!