Javaプログラミング/Javaプログラミング関連情報

データストアにデータを保存する(4ページ目)

今回は、プロジェクトの基本構成を理解し、GAEの中でもっとも重要な機能である「データストア」を利用してみましょう。

執筆者:掌田 津耶乃

データの追加機能を作る


では、作成したSampleDataを使い、データを保存する処理を作ってみましょう。ここでは、「add.html」というHTMLページに値を入力するフォームを用意し、送信先のサーブレットで保存の処理を行うようにしてみましょう。

まずは、サーブレットを作ります。ここでは、jp.allaboutパッケージに「Gae_addServlet.java」というソースコードファイルを用意し、以下のように記述をします。

package jp.allabout;

import javax.jdo.*;
import java.io.IOException;
import java.util.*;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class Gae_addServlet extends HttpServlet {

  public void doGet(HttpServletRequest req,
      HttpServletResponse resp)
      throws IOException {
    resp.setContentType("text/plain");
    resp.getWriter().println("can not access!!");
  }

  protected void doPost(HttpServletRequest request,
      HttpServletResponse resp)
      throws IOException {
    request.setCharacterEncoding("UTF-8");
    String message = request.getParameter("message");
    String account = request.getParameter("account");
    Date date = Calendar.getInstance().getTime();
    SampleData data = new SampleData(message,account,date);
    PersistenceManagerFactory pmf = PMF.get();
    PersistenceManager pm = pmf.getPersistenceManager();
    try {
      pm.makePersistent(data);
    } finally {
      pm.close();
    }
    resp.sendRedirect("/index.jsp");
  }
}

ここでは、doGetでアクセスした場合には「can not access!!」と表示するだけです。データ保存の処理はPOST送信されたときに行います。SampleDataでは、ID、メッセージ、アカウント、日時の4つの情報をプロパティに持たせますが、このうちIDは自動生成しますので不要です。また日時は現在の日時を示すDateを作成して保存します。したがって、フォームから送信してもらうのは、メッセージとアカウントの情報だけです。ここでは、"message"と"account"という名前で送られてくるものとして、getParameterで値を取り出しています。

必要な値が揃ったら、SampleDataインスタンスを作成します。そして、保存のための処理に進みます。

PersistenceManagerFactory pmf = PMF.get();

まず、PMF.getを呼び出して、PersistenceManagerFactoryインスタンスを取得します。そして、ここから一切に永続化の操作を行うPersistenceManagerクラスのインスタンスを取り出します。

PersistenceManager pm = pmf.getPersistenceManager();

getPersistenceManagerで取得したPersistenceManagerインスタンスには、永続化されたデータを操作するためのさまざまなメソッドが用意されています。保存は、以下のように行います。

try {
  pm.makePersistent(data);
} finally {
  pm.close();
}

makePersistentは、引数に渡したオブジェクトを永続化します(つまり、保存するということです)。そして実行後、closeでPersistenceManagerを閉じます。これでdataはデータストアに保管され、いつでも取り出して利用できるようになります。案外、簡単な操作ですね。
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます