聚合的增删改查[实战疑难,有人会吗?谢谢!]

10-08-03 lovko
最近在项目中实践领域驱动设计的方式开发,在建好模型,划分好聚合后,开始编码时在仓储持久方面遇到些疑问希望各位有经验的前辈们帮我解答下,谢谢:

我举个实际的例子吧。拿订单来说:

Order-----

|------OrderLines:List<OrderLine>

|------OrderLogs:List<OrderLog>

|------OrderStatus:OrderStatus

|------CreatedTime:DateTime

|---->……

假设有这样一个聚合,里面会有订单的基本信息,还会有订单明细(OrderLine)、订单日志(OrderLog)、订单状态(OrderStatus)一系列的复杂对象。它们可能都存储在其它的关联表中。

那么当我在新增一个订单的时候,我需要判断所OrderLines、OrderLogs等这些象是否有记录,有记录存储到相应的数据表中。

但是当修改的时候,如何很好的处理?

Order.OrderLines里面可能只有一条OrderLine记录被修改,在b/s结构中,如何很好的判断出这条记录。来标记它的修改。

如果情况更复杂些,有些界面上集合了新增,修改、删除等一系列的操作,如何来区分这些记录的增、删、改状态。

[该贴被lovko于2010-08-03 14:14修改过]

    

banq
2010-08-03 16:50
2010年08月03日 12:06 "lovko"的内容
我需要判断所OrderLines、OrderLogs等这些象是否有记录,有记录存储到相应的数据表中。 ...

使用Hibernate或JPA的merge语法就会自动帮助你判断。

lovko
2010-08-04 14:57
嗯,谢谢banq 的回复,但是很有时时候我们没有选择像hibernate这样强大完整的ORM框架,我们如果需要在这方面人工去处理的话,有个稍微具体一些的方案。C/S结构感觉处理起来会方便些,但在B/S结构中,感觉有点棘手。

banq
2010-08-04 16:47
2010年08月04日 14:57 "lovko"的内容
我们如果需要在这方面人工去处理的话,有个稍微具体一些的方案 ...

这属于编程中的脏活和累活,如果你不选择框架,就只能自己做,B/S架构中是框架为王,不是过去C/S架构数据库为王。

[该贴被banq于2010-08-04 16:47修改过]

janwen
2010-12-03 11:13
你的问题没看明白,新增订单的时候,不是其他的属性都需要添加吗?只是订单修改的时候需要判断,你的问题反正看不太明白,麻烦再讲讲,我对这种聚合感兴趣,谢谢

猜你喜欢