【问题标题】:GWT + GAE/J, sending JDO objects through the wire, but how?GWT + GAE/J,通过线路发送 JDO 对象,但是如何?
【发布时间】:2009-07-02 07:47:08
【问题描述】:

我遇到了问题。我想创建 Document 对象,并且我想拥有一个 com.google.appengine.api.users.User 类型的用户属性(在 GAE 的文档网站上,他们说我们应该使用这个对象而不是电子邮件地址或其他东西,因为这个对象可能会被增强为唯一的)。但是现在这个对象不能被 GWT 编译,因为我没有那个对象的源代码。 我该如何解决这个问题?

我正在搜索有关 DTO 的文档,但我意识到这可能不是我应该使用的最佳模式。

你有什么推荐的?

非常感谢您的帮助!

问候, 巴林特·克里万

【问题讨论】:

    标签: java google-app-engine gwt gwt-rpc


    【解决方案1】:

    为了避免对内部带有 com.google.appengine.api.users.User 的对象进行 DTO,您可能可以使用来自 http://www.resmarksystems.com/code/ 他为核心 GAE 数据类型(Key、Text、ShortBlob、Blob、Link、User)构建了包装器。我已经用 datastore.Text 对其进行了测试,效果很好。

    【讨论】:

    • 感谢您的指导。也许这就是我一直在寻找的 :) 顺便说一句,我仍然不确定是否使用 DTO ;)
    【解决方案2】:

    关于您是否应该能够在客户端重用来自服务器的对象存在很多争论。但是,重用在实际应用程序中很少能很好地发挥作用,因此我通常建议创建纯 Java 对象,将数据复制到其中以发送到客户端。这使您可以根据您在客户端上的需要定制数据,并避免您意外通过网络发送敏感信息的陷阱。

    所以在这种情况下,我建议您创建一个单独的对象以通过网络发送。顺便说一句,如果你有 AppEngine SDK for Java (http://code.google.com/appengine/downloads.html),它包含一个我做的演示应用程序(粘性),它演示了这种技术。

    【讨论】:

    • 嗨!感谢您的回答!我检查了您的来源,看起来很有希望,但我意识到您正在直接使用 Datastore API。是不是太详细的实现用法了?也许如果我使用 JDO,它会更抽象一点(如果我将我的应用程序部署在 GAE 以外的其他服务上),但它有点困扰我,我有“重复”,当然我获得了更多的控制权关于我真正发送的信息。我会考虑,但可能我会选择 DTO。
    【解决方案3】:

    这个question 也解决了这个问题: 它链接到一个半可行的解决方案,用于自动使您的持久对象 gwt-rpc 兼容。

    【讨论】:

      【解决方案4】:

      我有同样的问题,你的回答很有趣,但我总是很难过复制两次数据...另外,当你的 dao 获取数据时,你将不得不解析所有结果以将它们复制到纯java 对象,不是吗?这似乎是一个沉重的操作。您对这些问题有何看法?

      【讨论】:

        猜你喜欢
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 2011-06-26
        相关资源
        最近更新 更多