1

我正在开始一个新的 Spring 项目,并决定尝试 Spring Roo。在设置持久层时,我看到 Spring Roo 支持(实际上甚至默认为)ActiveRecord 模式。虽然我过去一直是 DAO/DTO 的粉丝,但 Roo 为使用 ActiveRecord 模式提供了一个很好的案例,因为它似乎“隐藏”了 apsect 文件中的大多数 ActiveRecord 方法。

有谁知道为什么 Spring Roo 开发人员会默认 ROO 使用 AR 模式,而 Spring Data 在提供/隐藏 CRUD(DAO 模式的典型 bain)方面做得如此出色?Spring 是否试图推动更多人使用 AR 模式而不是 Repo 模式?

4

1 回答 1

6

我相信这是因为 Rails/Ruby 阵营的 ActiveRecord 范式展示了我们习惯的完整堆栈的替代方案。这是 Spring 团队的说法:

我们删除了 DAO 层,因为它对于创建大多数人试图构建的典型 Web 应用程序并不是绝对必要的

还值得观察的是,大多数现代 RAD 框架都避免了 DAO 层,而是将持久性方法直接添加到实体中。如果您将类似技术与 Roo 进行比较,您会发现这种避免 DAO 层的做法是司空见惯的、主流的并且不会导致问题。

来源:http ://static.springsource.org/spring-roo/reference/html/architecture.html#architecture-dao

也就是说,我已经成功地将 Roo 与类应用程序层一起使用。优点是感觉更“春天”,而且由于我们可以移除 Roo 并内联所有 IDT,长期维护可能会更简单。

最近,我使用 ActiveRecord 方式,因为 Roo shell 在使用存储库时仍然不支持动态查找器。我不希望他们很快就会解决这个问题: https ://jira.springsource.org/browse/ROO-2694

于 2013-08-27T00:53:48.370 回答