【发布时间】:2012-02-24 20:46:23
【问题描述】:
我正在创建一个应用程序,该应用程序将使用各种大小的表,而我曾在一个标有 DDD 的项目上工作,但它并没有真正正确地处理持久性部分,因此我只能继续研究。我没有完全掌握并且似乎找不到具体例子的一件事是如何坚持聚合根的“孩子”。我在没有 ORM(只是普通的旧 DAO)的情况下工作,这很难找到示例(这实际上是 uni 的一个项目,它是 db 特定的,所以我“不允许”使用 ORM,但我很感激这会容易得多,我根本做不到)。我四处寻找有关 stackoverflow 的具体示例,但似乎没有什么能真正描述我的特定问题。
我怀疑下面的代码是否正确
public DataTable getTableByID(int id) throws AccessException{
DataTable result = this.context.TableContext().getEntityByID(id);
result.setColumns(getColumnsByTableID(id));
return result;
}
private List<DataColumn> getColumnsByTableID(int id){
Object[] arguments = { id };
return this.context.ColumnContext().getUnitsWhere("TABLE_ID = ?", arguments);
}
如您所见,我每次检索表实体时都会设置列集合,如果表已经在内存中,这显然会丢弃已添加到集合中或从集合中删除的任何列。我不确定我应该在哪里或如何检索列(我考虑过从表类中调用存储库,但对此感觉有些不对劲)。当谈到持久性时,我也不完全确定如何去做,当我将对象添加到列表中时,我可以轻松地检索它们,但是当我删除它们时,我真的没有办法检测(因为我确保将事件赶上这将是作弊:))。向正确的方向稍加推动将不胜感激,谢谢。
【问题讨论】:
标签: java domain-driven-design repository design-patterns unit-of-work