【发布时间】:2018-08-13 13:59:30
【问题描述】:
我有一个设计层面的问题。在我们的应用程序中使用 DAO 或 DTO 之间存在争议。
我浏览了现有的帖子并了解到 DTO 仅在表示复杂对象时使用。但是,我的视图可以仅使用我的表上的连接操作来生成。
数据库:
表格:
game
game_details (has a primary key of Game) - There will be at max 4 rows for a given game_id
我的视图包含桌游和游戏详细信息中的所有列。这 4 行中的每一行都将显示在不同的选项卡中。 对于视图中的每次更改,都有 3/4 的概率更新两个表。
现在最好的方法是什么。 1. 将整个视图包装为 DTO。 2. 或者用 GameDetails 模型对象列表定义我的模式 Game。
如果我们采用第二种方法,我们持久化数据的方式是否会有任何变化。
【问题讨论】:
-
这不是非此即彼的论点:DAO 和 DTO 是根本不同的东西。关于粒度的答案取决于您将数据保存在哪里,还有谁可以访问它,以及您选择如何处理“脏读”。由于一个游戏可以有许多用户,因此当您在选项卡之间循环时,其他用户可能会发生变化。我建议为数据访问创建一个单独的 REST 服务。让 UI 独立于服务。
-
首先,DTO 不能与 DAO 对立,因为它们在应用程序的不同(和独立)部分中发挥作用。 DTO 将您的应用程序连接到外部世界。当
DAO将应用程序连接到数据库时。可能你想问DAO和Repository?还是RepositoryvsAggregate? -
明白。我会纠正的。如果换个说法,我的问题是使用 DTO 最佳方法或仅使用存储库来聚合我的表。
标签: java spring-mvc model-view-controller dao dto