对于我的应用程序,我正在考虑使用ORM,并且目前正在尝试确定域层是否应该通过数据访问对象,存储库或其他方式与其进行交互?我不愿意将ORM与存储库配对,因为如果ORM实体与域对象相同,它们可能变得多余,但是拥有一个大的DAO似乎很笨拙。我想使我的SQL保持集中状态,但是我不知道这些选项中的哪一个(如果有的话)最有意义。对适当的设计模式有何建议?
答案 0 :(得分:1)
这是非常基于意见的,但是我倾向于从域模型中创建单独的实体。域模型需要与您的域紧密匹配,而您的实体则需要对存储进行紧密建模。它们最初可能非常紧密地匹配,并且看起来确实是多余的,但是它们经常非常迅速地彼此漂移。
话虽这么说,但是只将域实体映射到持久性实体的包装程序通常感觉很恐怖,并且浪费大量时间。此外,直到进行游戏重构时,它才会付诸东流,并且您意识到您的域不完全正确,但是您不想修改持久性层。
好消息是,大多数语言/框架都有某种形式的映射库,可让您从一个对象自动映射到结构类似的另一个对象。这是一种加快速度的好方法,同时当您的需求发生变化时仍然可以灵活地创建手动映射。