Tag: 表数据网关

数据映射器,表数据网关(网关),数据访问对象(DAO)和存储库模式之间有什么区别?

我正试图刷新我的devise模式技能,我很好奇这些模式之间有什么区别? 他们看起来都是一样的东西 – 封装特定实体的数据库逻辑,所以调用的代码不知道底层的持久层。 从我简短的研究中,他们通常都会实现您的标准CRUD方法,并将数据库特定的细节抽象出来。 除了命名约定(例如,CustomerMapper与CustomerDAO与CustomerGateway与CustomerRepository),有什么区别? 如果有区别,你什么时候select一个呢? 在过去,我会写代码类似于以下(简化,自然 – 我通常不会使用公共属性): public class Customer { public long ID; public string FirstName; public string LastName; public string CompanyName; } public interface ICustomerGateway { IList<Customer> GetAll(); Customer GetCustomerByID(long id); bool AddNewCustomer(Customer customer); bool UpdateCustomer(Customer customer); bool DeleteCustomer(long id); } 并有一个CustomerGateway类来实现所有方法的特定数据库逻辑。 有时我不会使用一个接口,并使CustomerGateway上的所有方法都是静态的(我知道,我知道这使得它更lesstesting),所以我可以这样调用它: Customer cust = CustomerGateway.GetCustomerByID(42); 这似乎是数据映射器和存储库模式的相同原理; DAO模式(与Gateway相同,我认为?)似乎也鼓励数据库特定的网关。 我错过了什么吗? […]