代码之家  ›  专栏  ›  技术社区  ›  Khorkrak

SQL炼金术MVC和交叉控制器联接

  •  0
  • Khorkrak  · 技术社区  · 14 年前

    当使用SQL炼金术抽象数据访问层并使用控制器作为从该抽象层访问对象的方式时,应该如何处理连接?

    例如,假设您有一个orders控制器类,它管理order对象,这样它就为用户对象提供了getorder、saveorder等方法,以及类似的控制器。

    首先,你还需要这些控制器吗?您是否应该将SQL炼金术视为处理数据访问的“工具”。当您有一种干净的声明性方法来获取和持久化对象,而无需直接编写SQL时,为什么还要在那里处理面向对象的控制器呢?

    好吧,一个原因可能是您可能想要用直接的SQL或Storm或其他任何东西替换SQL炼金术。因此,在那里让控制器类充当中间层有助于限制随后需要更改的内容。

    总之,回到主要问题,假设您有这两个控制器,现在假设您想要满足某些条件的某组用户的订单列表。你打算怎么做?一般来说,你不希望控制器跨越域——命令控制器只知道命令,而用户控制器只知道用户——它们不会互相干扰。您也不想去获取所有匹配的用户,然后向订单控制器提供一个大的用户ID列表,以找到匹配的订单。

    需要的是加入。这就是我被困住的地方——这似乎意味着要么控制器必须跨域,要么它们应该完全消失,而您只需直接通过SQL炼金术进行连接,并根据需要获得最终的用户和/或顺序对象。思想?

    1 回复  |  直到 14 年前
        1
  •  2
  •   zefciu    14 年前

    控制器是为了方便您封装功能。不要束缚你的手。如果你想加入,只需加入。使用您认为逻辑上最适合的控制器进行查询。