【发布时间】:2014-07-20 23:19:02
【问题描述】:
我是设计类图的新手。 由于我的应用程序用作 REST API,我想使用 DTO-DAO 设计模式。对于用户注册模块,DB 包含 3 个表,分别用于用户登录、个人资料和地址。
我是否需要创建 3 个 DTO 和相应的 DAO 来插入/更新用户登录、配置文件和地址? 如果是这样,如果我只创建一个表而不是三个表并在将来删除两个表怎么办?
【问题讨论】:
我是设计类图的新手。 由于我的应用程序用作 REST API,我想使用 DTO-DAO 设计模式。对于用户注册模块,DB 包含 3 个表,分别用于用户登录、个人资料和地址。
我是否需要创建 3 个 DTO 和相应的 DAO 来插入/更新用户登录、配置文件和地址? 如果是这样,如果我只创建一个表而不是三个表并在将来删除两个表怎么办?
【问题讨论】:
无论您采用何种设计模式,数据建模完全取决于您。您的设计模式应基于您的数据建模和您的需求。并非如此,您的数据模型将取决于设计模式,但取决于您的需要
【讨论】:
您可以创建任何您喜欢的 dto 对象。但是,您的数据库设计和 dto 设计都是由系统中的概念(用户/公司/地址等)驱动的,这通常称为域。
你会经常发现两者非常相似,毕竟它们都代表同一个域!
至于你是否需要不同的 dto 来进行不同的调用,这真的取决于你。您是否需要不同的类来表示插入/更新调用?有什么不同?通常更新有一个 id(而插入还没有分配一个)。那么为什么不设置两个 update 继承自 insert 但添加 id 属性的地方呢?
删除 dtos,您可以将其作为更新或仅作为 id 执行。毕竟,为什么要费心填充您要删除的整个对象。我个人只想说
DeleteUser(int id);
容易多了!
【讨论】: