我最近一直在阅读,TableData网关和RowData网关。根据"企业应用程序体系结构模式",RDG一次处理一条记录,TDG一次处理一条记录处理整个表。但这两种模式看起来非常相似,它们封装了SQL查询,并根据我们所做的查询在记录集中返回单个记录或许多记录。我真的不知道什么时候更喜欢TDG而不是RDG。解释一下它们之间的区别是很有帮助的。根据Martin Fowler的说法,TDG在返回一条记录时与RDG相同。但是我们也可以为多个记录使用RDG !那为什么要用TDG。任何帮助都将不胜感激。谢谢你!
Row Data Gateway封装了对DB中的一行的访问,而Table Data Gateway封装了对表级别的访问,在我看来,这根本不是另一个的退化形式。
虽然表数据网关有返回记录集的查找方法,但对于行数据网关,您需要一个单独的Finder类,每行返回一个网关类。
是否使用其中一种以及使用哪种模式是一个复杂的决定,它与您选择使用的其他模式有关。
从他在"何时使用它"一节中关于两种模式的讨论来看,如果使用域模型模式,他更喜欢使用活动记录。这两种网关模式在与Transaction Script结合使用时都是明智的。
表数据网关更简单,所以如果它能满足你的需要,它可能是正确的选择。
您不可能在一个应用程序中同时使用这两种模式。