libro
www.tuyano.com
Google App Engine for Java(GAE/J)プログラミング入門

データストアのCRUD (2/6)

作成:2010-05-03 17:03
更新:2010-05-10 17:23

■JDOによるオブジェクトの永続化

では、サーブレットを作成しましょう。これは、jp.tuyanoパッケージ内に「AddLinkDataServlet.java」というソースコードファイルで作成します。(下のリスト参照)ポイントを以下に整理しておきましょう。


1.LinkDataインスタンスの作成
まずは、保存するLinkDataインスタンスを作成します。まずはgetParameterで送信されてきたデータを取り出し、Dateインスタンスなどはその場で生成し、それらの値を引数に用意してnew LinkDataします。前にも触れましたが、このとき、IDの値は不要です。

2.PersistenceManagerFactory/PersistenceManagerの用意
まずは、PersistenceManagerFactoryを取得し、そこからPersistenceManagerを取得します。これはJDO操作の基本でしたね。

3.makePersistentで永続化する
続いて、保存するインスタンスをPersistenceManagerインスタンスの「makePersistent」で永続化します。これは、引数に永続化したいオブジェクトを渡して呼び出すだけです。

4.PersistenceManagerの開放
最後に、「close」を呼び出してPersistenceManagerを開放します。これで作業は完了です。


このように、JDOを使ってデータストアに新しいオブジェクトを保存するには、makePersistentというメソッドを新たに覚えるだけです。JDOQLなどもまったく必要としません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;

import java.io.IOException;
import java.net.URL;
import java.util.*;

import javax.jdo.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class AddLinkDataServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req,
			HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/plain");
		resp.getWriter().println("no url...");
	}

	@Override
	protected void doPost(HttpServletRequest req,
			HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String title = req.getParameter("title");
		String url = req.getParameter("url");
		String comment = req.getParameter("comment");
		Date date = Calendar.getInstance().getTime();
		LinkData data = new LinkData(title,url,comment,date);
		PersistenceManagerFactory factory = PMF.get();
		PersistenceManager manager = factory.getPersistenceManager();
		try {
			manager.makePersistent(data);
		} finally {
			manager.close();
		}
		resp.sendRedirect("/index.html");
	}
}
※関連コンテンツ

「Google App Engine for Java(GAE/J)プログラミング入門」に戻る