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

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

作成:2010-05-03 18:52
更新:2010-05-10 17:25

■オブジェクトの更新処理

では、LinkDataの更新を行うEditLinkDataServletを作成しましょう。下のリスト欄にソースコードを掲載しておきます。ここでは、以下のような流れでオブジェクトの更新を行っています。

1.POSTされた値をそれぞれ変数に取り出します。
2.getObjectByIdを使い、編集するオブジェクトを取得します。
3.Setterメソッドを呼び出して、フィールドの値を更新します。
4.closeでPersistenceManagerを開放します。

――これだけです。「え、値を書き換えたオブジェクトを保存する処理とかは?」と思った人。いいえ、不要なのです。PersistenceManagerを利用してオブジェクトを取得し、その値を変更し、PersistenceManagerをcloseする。これだけです。これで、データストアに保管されたオブジェクトはきちんと更新されているのです。あっけないほどに簡単ですね!

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

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

●プログラム・リスト●

package jp.tuyano;

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

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

public class EditLinkDataServlet 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");
		long id = Long.parseLong(req.getParameter("id"));
		String title = req.getParameter("title");
		String url = req.getParameter("url");
		String comment = req.getParameter("comment");
		PersistenceManagerFactory factory = PMF.get();
		PersistenceManager manager = factory.getPersistenceManager();
		LinkData data = (LinkData)manager.getObjectById(LinkData.class,id);
		data.setTitle(title);
		data.setUrl(url);
		data.setComment(comment);
		manager.close();
		resp.sendRedirect("/index.html");
	}
}
※関連コンテンツ

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