1

在 Grails 中有一个插件compile ":dto:0.2.4"将域对象传输到 DTO。使用该插件时,DTO 被创建为 Java 类。

例如,如果有像 Person.groovy 这样的域类,则会像 PersonDTO.java 这样创建 DTO

这种行为的意图是什么?任何评论将不胜感激。

4

1 回答 1

2

Peter Ledbrook 在这篇博文中回答了您的问题。

尽管如此,DTO 仍然存在(请原谅双关语)。当您想通过 RPC 序列化数据时,它们通常是您可用的少数选项之一。GWT-RPC 就是一个很好的例子,也是 Grails DTO 插件的原因。Gilead 允许您透明地序列化 Hibernate 域实例,但这仅在域类可以由客户端加载时才有效。由于 GORM 域类通常是 Groovy 的,因此 GWT 不支持该选项。您的典型 Grails 域类还包括一堆客户几乎不会感兴趣的东西,比如自定义映射。

因此,基本上它可以是您的域类的轻量级版本,只有您的客户需要的数据。

不是 Grails 的情况,它具有数据库查询的静态方法,但是如果您有一个DAO类,则可以使用 DTO 模式来确保不允许您的客户端执行涉及数据库的方法。这可以很好地确保在您的表示层中不恰当地使用此对象。

于 2013-05-10T11:39:45.493 回答