`

Google Web Toolkit 和 Google App Engine 综合教程 存储篇

阅读更多

http://www.kylewu.net/

 

前面已经向同学们简要介绍了Google Web ToolkitGoogle App Engine ,并且做出了一个初步的界面。在这篇教程里,我们将一起学习如何使用Google App Engine 的数据库。

简单介绍Google App Engine 的数据库

Google App Engine 的数据库提供了健壮的可扩展的分布式数据存储,我们不必考虑连接哪一个数据库,也不需要配置连接参数。我们需要做的是调用简单的API来进行各种操作。

Google App Engine 的数据库提供了两套API : 标准API和底层API。标准API是与App Engine解耦的,所以使用标准API你可以很方便的将你的应用移植到其他环境中;而是用底层API,你可以让你的应用拥有更好的性能。

Google App Engine 支持两种连接数据库的标准: Java Data Objects (JDO) 和 Java Persistence API (JPA)。从Google App Engine 的网站中可以看到,它们都是由DataNucleus Access Platform提供的,不过我没有细看,有兴趣的同学可以自己点进去学习。

什么是JDO ?

Java Data Objects (JDO) 是存储对象的标准接口。使用了JDO的应用程序不需要关心数据库类型,不论是关系数据库,层次数据库还是对象数据库,这样在我们更换数据源的时候会非常的方便。

要在Google App Engine项目中支持JDO,需要进行配置,不过Eclipse的插件已经帮我们做好了,再次请有兴趣的同学移步这里仔细学习。

Java Persistence API (JPA) 和JDO的作用相似,我现在使用的JDO,所以就不多做介绍了,链接补上。

建立数据库的POJO类

前面进行了简单介绍,下面来实际操作一下。新建一个net.kylewu.idea.db.dataobject.Idea类。

package net.kylewu.idea.server;

import java.io.Serializable;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Idea implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1083036616443527590L;

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;
    @Persistent
    private String subject;
    @Persistent
    private String detail;
    @Persistent
    private String progress;
    @Persistent
    private String date;

    public Idea(Long id, String subject, String detail, String progress,
            String date) {
        super();
        this.id = id;
        this.subject = subject;
        this.detail = detail;
        this.progress = progress;
        this.date = date;
    }

    public Idea(String subject, String detail, String progress, String date) {
        this.subject = subject;
        this.detail = detail;
        this.progress = progress;
        this.date = date;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public String getProgress() {
        return progress;
    }

    public void setProgress(String progress) {
        this.progress = progress;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String toString(){
        return String.valueOf(id)+"|"+subject+"|"+detail+"|"+progress+"|"+date;
    }
}

 

 

JDO使用annotations来表示数据如何在数据库中存储。这里我们把id设置为主键。

与数据库交互需要用到PersistenceManager对象,它是由PersistenceManagerFactory中获得的,为了免去重复创建factory的开销,使用singleton模式来实现这个类。Google App Engine 上提供了一个很好的例子,我直接拿来用了。

 

package net.kylewu.idea.db;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance = JDOHelper
            .getPersistenceManagerFactory("transactions-optional");

    private PMF() {
    }

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
}

 

好了,这样就可以get到PersistenceManager对象了,那么该如何存储查询对象呢?代码很简单。

Idea idea = new Idea ("Kylewu Idea", "This is Kyle Wu's idea.", "75%", "");
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(idea);
String query = "select from " + Idea.class.getName();
(List) list = pm.newQuery(query).execute();

 

 

同学们要问了,我们怎么让他跑起来呢?这个涉及到Google Web Toolkit 与服务器端的交互了,下一篇教程将详细介绍。

分享到:
评论
1 楼 dldahua 2010-04-08  
请教我使用了更新的eclipse来处理我的Java bean为什么总是报我的实体没有被增强啊?有遇到相同情况的朋友帮下,我使用的是struts2的mvc模式处理的

相关推荐

    Google App Engine 入门教程

    综上所述,入门教程涉及到了安装与配置Eclipse开发环境、安装Google App Engine插件、创建和配置Web应用项目以及编译时的Java版本兼容性问题,这些知识点对于想要开始使用Google App Engine开发Web应用的开发者来说...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    google app Engine for java中文api

    - **示例应用**:在第三部分的文章中,作者会指导读者创建一个联系人管理应用程序,利用App Engine for Java的Java持久性支持来存储和管理联系人数据。 #### 五、总结 Google App Engine for Java为Java开发者提供...

    Google Appengine应用文档

    以 MyEclipse 7.5 为例,你需要通过插件管理器添加 Google Appengine 插件。如果在搜索中找不到插件,你可以手动添加 Google 的更新站点(http://dl.google.com/eclipse/plugin/3.4)。安装完成后,记得重启 ...

    appengine-java-sdk

    总结来说,"appengine-java-sdk"是开发和运行Java应用程序在谷歌AppEngine上的基石,它集成了GWT的支持,为开发者提供了完整的开发、测试和部署解决方案。利用这个SDK,开发者可以构建高效、可扩展的云应用,并享受...

    Begin Java Google APP Engine

    总的来说,《 Beginning Java™ Google App Engine》是一本全面的入门教程,涵盖了从基础概念到高级实践的各个层面。通过本书,读者将掌握在Google App Engine上构建和管理Java应用所需的知识和技能,为在云端开发...

    google app engine开发人员文档

    Google App Engine(GAE)是谷歌提供的一种云计算平台,它允许开发者构建并托管Web应用程序,无需管理和维护服务器硬件。这个平台支持多种编程语言,包括Python、Java、Go和PHP,为开发者提供了强大的服务,如数据...

    Apress - Beginning Java Google App Engine (December 2009) (ATTiCA).pdf

    - **数据存储**:书中详细讲解了如何使用Google App Engine提供的数据存储服务(如Datastore),以及如何通过Java Data Objects (JDO) 和 Persistence as a Service 进行数据操作。 ##### 3. 核心组件和技术 - **...

    Google App Engine Java and GWT Application Development

    《Google App Engine Java和GWT应用开发》一书聚焦于如何利用Google App Engine(GAE)平台、Java语言以及Google Web Toolkit(GWT)来构建强大、可扩展且交互式的云端Web应用程序。这本书由Daniel Guermeur和Amy ...

    Google_App_Engine开发环境搭建

    Google App Engine for Java 是一个由 Google 提供的云计算平台,专为 Java 开发人员设计,让他们能够构建可伸缩的Web应用程序。自2009年4月起,这个平台开始支持Java,为开发者提供了丰富的服务和工具。本文将深入...

    GWT 项目开发 1.6.4 本地开发 appengine-tools-api 突破限制

    标题 "GWT 项目开发 1.6.4 本地开发 appengine-tools-api 突破限制" 提及的是Google Web Toolkit (GWT) 的一个特定版本(1.6.4)在本地开发环境中利用appengine-tools-api进行开发时遇到的限制及如何突破这些限制。...

    Apress - Beginning Java Google App Engine(Java)(Dec 2009).pdf

    本书由 Kyle Roche 和 Jeff Douglas 合著,旨在为使用 Java 技术的 Web 开发者提供关于 Google App Engine 的核心组件、平台和服务的深入学习。作为云计算领域的一本指南,本书将带领读者从零开始探索 Google App ...

    部署一个简单GWT应用到Google App Engine

    3. 准备GAE项目结构,包括`appengine-web.xml`配置文件。 4. 将GWT编译后的静态资源和GAE项目结构打包成WAR文件。 5. 使用Google App Engine SDK部署WAR文件到GAE。 在`Gwt.html`文件中,可能是GWT应用的启动页面,...

    GWT AppEngine 保存对象序列号.

    标题 "GWT AppEngine 保存对象序列号" 涉及到的是Google Web Toolkit (GWT) 和 Google App Engine (GAE) 平台上的数据持久化技术。GWT 是一个用于构建富互联网应用程序(RIA)的开源Java框架,而AppEngine是Google...

    Packt.Google.App.Engine.Java.and.GWT.Application.Development.Source.Code

    1. **Google App Engine (GAE)**: Google App Engine是一个托管平台,允许开发者构建、部署和运行web应用程序。它提供了服务器、数据库、存储和网络服务,无需考虑硬件维护,只需关注应用的代码。 2. **Java**: 这...

    Packtpub.Google.App.Engine.Java.and.GWT.Application.Development.Nov.2010

    《基于Google App Engine(GAE)的Java和GWT应用开发》这本书深入探讨了如何使用 Java 和 GWT 在 GAE 上构建强大且可扩展的 Web 应用程序。通过对 GAE 的介绍、Java 和 GWT 的应用技巧以及构建交互式 Web 应用程序的...

    GWTguestbook_10312008.zip

    通过分析这个GWT Guestbook项目,我们可以了解到GWT如何结合Java和Python来构建复杂的Web应用,以及如何利用Google App Engine的Datastore服务进行数据管理。同时,我们还能学习到如何处理用户交互、模板渲染和Web...

    gwt-saas-contacts:具有GWT的Cloud Appengine联系人

    【标题】"gwt-saas-contacts:具有GWT的Cloud Appengine联系人" 提供了一个基于Google Web Toolkit(GWT)和Google Cloud Platform的App Engine服务的SaaS(Software as a Service)应用程序示例,专注于管理联系人...

    GWT-Banking-App

    GWT银行应用程序 基于Web服务器的应用程序,基于Google Web Toolkit... App Engine数据存储区是无模式的对象数据存储区,可为我们的Web应用程序提供健壮且可扩展的存储。 可以通过' 。 GWT UI活页夹有助于提高生产力

    GAE开发环境(日文)

    Google App Engine(GAE)是Google提供的一个云平台,用于构建和托管Web应用程序。它支持两种编程语言:Java和Python。本指南将重点介绍如何在Java环境下设置Google App Engine的开发环境,特别是使用Eclipse IDE。 ...

Global site tag (gtag.js) - Google Analytics