7

GWT 有一个Editor Framework,粗略检查后,它看起来很像 Spring MVC/Forms 处理后端数据对象和前端 UI 组件之间的数据绑定的方式。

我正在编写我的第一个 GWT/GAE 应用程序,想知道是否有任何方法可以将此编辑器框架GAE 的 JDO/Atomic 库结合使用,这是您针对应用程序和底层数据存储之间的 O/R 映射编写的 API .

这两个框架是互补的还是相互排斥的?如果他们可以一起工作,有人可以提供一个小代码示例,说明我如何使用它们来填充,比如说,一个<select>带有名称列表的 HTML 框,或者其他基本但实用的东西。

我想这可能涉及一个Person代表一个人(并拥有一个属性)的 POJO String name,也许某种PersonDAO使用 JDO/Atomic 到Person数据存储区的 CRUD 实例,然后某种Editor<Person>可以将Person实例映射到 frontend <select>s。

如果我能看到一个可行的例子,我想这一切都会为我而存在。而且,如果这些是相互排斥的并且不能一起使用,那么将非常感谢您对原因的可靠解释!提前致谢!

4

2 回答 2

1

我希望这会有所帮助,这是一些将数据存储在 GAE 数据存储中的示例代码,一个用于获取数据并使用内容填充 GWT 下拉列表的简单查询。

这是一个持久保存到应用引擎数据存储的 JDO ORM:

https://github.com/bsautner/com.nimbits/blob/master/nimbits-tds/src/com/nimbits/server/orm/EntityStore.java

这是查询数据存储以获取对象列表的示例

@Override
    public List<Entity> getEntityByName(final User user, final String name) 
{
        final PersistenceManager pm = pmf.getPersistenceManager();

        try {
            final Query q1 = pm.newQuery(EntityStore.Class);
            final List<Entity> c;

                q1.setFilter("name==b");
                q1.declareParameters("String b");
                q1.setRange(0, 1);
                c = (List<Entity>) q1.execute(name);

            if (c.isEmpty()) {
                return Collections.emptyList();
            } else {

                final Entity result = c.get(0);
                return createModel(user, result);

            }

        } finally {
            pm.close();
        }
    }

这是一个基于 GWT (GXT) 的组合框,其中填充了从 ORM 模型创建的 POJO

https://github.com/bsautner/com.nimbits/blob/master/nimbits-tds/src/com/nimbits/client/ui/controls/EntityCombo.java

于 2012-10-31T20:52:19.277 回答
0

在 IE6 和 HTML4 时代,没有办法编写像 GMail 一样酷的 Web 应用程序。这就是引入 GWT 并实现目标的原因:GMail 能够在任何浏览器中工作。

在我们这个时代,GWT 似乎失去了领导地位。jQuery 变得越来越流行,因为它使用硬件加速并且运行速度更快……但是现在忘记 GWT 还为时过早。

如果你想使用 Editor 框架和 JDO,那么我们需要强调它们之间存在一个瓶颈:GWT RPC。RPC 每次都对 POJO 进行序列化和反序列化,而自定义这种序列化/反序列化的方法非常有限。

GWT RPC 的这个缺点迫使大多数开发人员维护两个相同的 POJO 层次结构:一个用于 JDO/Hibernate,第二个用于 GWT。通常老板会批准这个解决方案,因为它比绕过每个 RPC 调用来使其工作更快、更容易。在我见过的大多数现实世界项目中,有两个层次结构......

另一方面,jQuery 根本不需要定义任何 POJO。显然这是发展速度不同的一个原因。

很抱歉,我没有提供任何答案。我希望我的想法是有用的,即使它只是说你在死胡同里。而且我已经多次看到经验丰富的建筑师决定使用 GWT 并且也进入了这条死胡同。现在他们通过花费时间和金钱编写两个相同的 POJO 层次结构来为这个错误付出代价。

于 2012-10-31T21:33:30.637 回答