寻找关于在 GAE-J 中使用 Objectify-appengine 而不是 JDO 的意见 [关闭]

Posted

技术标签:

【中文标题】寻找关于在 GAE-J 中使用 Objectify-appengine 而不是 JDO 的意见 [关闭]【英文标题】:Looking for opinions on using Objectify-appengine instead of JDO in GAE-J [closed] 【发布时间】:2011-01-24 13:20:36 【问题描述】:

我在 GAE 中的数据存储/JDO 学习曲线上一直在缓慢而痛苦地工作。最近我发现了一个名为Objectify 的框架,它应该介于非常简单的Datastore 原生API 和复杂的JDO 之间。我一直在阅读它,它看起来确实很有吸引力。

我想知道的是,如果有人对 Objectify 有丰富的经验......它有多成熟?有很多用户社区吗?它准备好迎接繁重的黄金时段了吗?可以放弃吗?

这里或一般网络上似乎没有太多关于 Objectify 的讨论,这让我对将我的项目委托给它感到紧张。

【问题讨论】:

没有使用过,但从他们的文档来看,它似乎使用 GAE 内部二进制格式(协议缓冲区)与 memcache 集成,而不是要求您的类可序列化(JDO/DataNucleus 确实如此)。我喜欢。感谢您指出这个项目,尽管大约一个月前我正在寻找 JDO 替代品,但我还没有听说过。 是的,我也非常喜欢 memcache 处理。减少的冷启动时间也很重要。但是,由于它周围没有太多社区(目前),而且我不确定它是否能跟上谷歌的更新,所以我采取了观望态度。 哦,看起来不错!我感到您对 jdo 学习曲线的痛苦。坚持下去而不是尝试编写一个全新的框架需要很大的意志力。只有更多的时间才能证明这是否是正确的选择:) 对于仍在阅读此问题的任何人,我最终从 JDO 转移到了低级 API,失去了一些方便的花絮,并在代码清晰度和性能方面获得了巨大的进步。我希望我从一开始就使用低级 API。 Google 现在在文档中强调低级 API,所以我认为这也是他们推荐的。 @tempy 是什么让您选择了低级 API 与 Objectify? 【参考方案1】:

您可以阅读这篇文章。它在 Objectify 和 JDO 之间提供了一个很好的比较

http://borglin.net/gwt-project/?page_id=491

这是一个迟到的回复,但我和你一样深入研究了这个问题。因为我当时想使用 lucene 和 compass 进行全文搜索,然后我发现你可以在这个项目的全文搜索中使用 objectify

http://code.google.com/p/fulltext-search-in-objectify/

【讨论】:

【参考方案2】:

我刚刚从 JDO 和低级 API 移植到 Objectify,我被卖掉了。自动使用 Memcache,查询更简单(更短),意外更少。我喜欢它不会隐藏数据存储的性质 - 它只是让它更易于使用。

【讨论】:

【参考方案3】:

Objectify 没问题,但没有比这更好的了。 Twig 相对较新,截至 2010 年 9 月 21 日,查看了两者的文档、示例、讨论组,看起来它在成为主流之前还有一些路要走。没有多少声称的功能具有开箱即用的工作示例。我喜欢 Twig 的简洁文档,而不是来自 objectify 的详细但有些清晰的文档。 Objectify 似乎希望我做很多工作,例如没有托管拥有的关系支持等。但是考虑到它在普通 JDO/JPA 之上提供的所有内容,并且考虑到 JDO/JPA 并没有提供太多,我会说 Objectify 是目前的最佳选择。

【讨论】:

【参考方案4】:

对于所有正在寻找 Andreas Borglin 提到的 objectify、Twig 和 SimpleDS 之间的采访风格比较的人,可以在此处获得:http://borglin.net/gwt-project/?page_id=604

【讨论】:

截至今天,链接已损坏【参考方案5】:

您可能还想查看最近发布的 Twig 最终版本 1.0:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/aafbeb679a6e6790

它很好地概述了 Twig 的功能。一个有趣的地方是能够进行非阻塞异步查询,目前只有 Twig 才有可能。

【讨论】:

【参考方案6】:

我已经对 objectify 进行了一些研究,并在 http://borglin.net/gwt-project/ 上写了一篇关于它的初始帖子。此时实际上至少有 5 种不同的低级包装器框架(objectify、Twig、SimpleDS、siena、slim3)。

我目前正在与每个框架的作者一起对 objectify、Twig 和 SimpleDS 进行访谈式比较。他们会回答一堆技术问题,我会为每个框架做一些代码场景。

与此同时,您可能想查看以下主题: http://groups.google.com/group/google-appengine-java/tree/browse_frm/thread/4467986eaf01788b/c6d007863a616a1b

http://groups.google.com/group/google-appengine-java/browse_thread/thread/f20d922ffecb310c

http://groups.google.com/group/google-appengine-java/browse_thread/thread/79078132130a3dfe#

【讨论】:

这真的很有趣也很有用,感谢您的努力。所有这些替代框架的激增可能对当前的数据存储-JDO 产品有所说明。 =) 是的。 JDO/JPA 解决方案在 AppEngine 上过于复杂。我猜谷歌选择只提供对标准化框架的支持,以避免“供应商锁定”的批评风暴。我知道已经有人在他们的项目中使用了 objectify 和 Twig,而且框架的作者非常敬业,所以我怀疑它们在不久的将来会被抛弃。即使是这样,根据您的需要修改代码库也可能更容易而不是与 JDO 作斗争...... 安德烈亚斯 - 你的采访很震撼!!!我注意到你只调查了 Objectify 自己……你试过 Twig 吗?在纸面上,它看起来是 JDO 的绝佳替代品。 仅供参考,Twig 的作者今天加入了 Objectify 项目。

以上是关于寻找关于在 GAE-J 中使用 Objectify-appengine 而不是 JDO 的意见 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 objectify 在实体中搜索子字符串

使用 Objectify 捕获 IllegalStateException

如何在 Objectify 中对响应进行排序?

您何时在 Objectify for GAE 中注册课程?

如何在 JUnit 中解决“您尚未启动 Objectify 上下文”?

由于缺少 ObjectifyFilter,Objectify 5.1 上下文未启动错误