package com.lab; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.List; import javax.jdo.JDOHelper; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; import javax.servlet.http.*; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; import com.lab.jdo.MessageBean; /** * JDOを使った登録と参照 */ @SuppressWarnings("serial") public class GAELabsServlet extends HttpServlet { /* (注意)インスタンス内に1つじゃないとエラーとなる */ final static PersistenceManagerFactory pmFactory = JDOHelper.getPersistenceManagerFactory("transactions-optional"); public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // Googleアカウントを取得 UserService userService = UserServiceFactory.getUserService(); User author = userService.getCurrentUser(); // メッセージ String message = "テストtest!!!"; Date now = new Date(); /* データ登録 */ PersistenceManager pmReg = pmFactory.getPersistenceManager(); // 登録対象のクラス MessageBean messageBean = new MessageBean(author, message, now); try { pmReg.makePersistent(messageBean); } finally { // pmReg.close(); } ////////////////////////////////////////////////// /* データ参照 */ PersistenceManager pmRef = pmFactory.getPersistenceManager(); try { // JDOQLで取得 String query = "select from " + MessageBean.class.getName() + " order by date desc range 1, 100"; List mesasgeBeanList = (List) pmRef.newQuery(query).execute(); if (!mesasgeBeanList.isEmpty()) { for (MessageBean m : mesasgeBeanList) { resp.getWriter().println(m.getId() + ", " + m.getDate() + ", " + m.getAuthor() + ", " + m.getMessage() + "
"); } } } finally { pmRef.close(); } } } //////////////////////////////////////////////////////////////////////// package com.lab.jdo; import java.util.Date; 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; import com.google.appengine.api.users.User; @PersistenceCapable(identityType = IdentityType.APPLICATION) public class MessageBean { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private User author; @Persistent private String message; @Persistent private Date date; public MessageBean(User author, String message, Date date) { this.author = author; this.message = message; this.date = date; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public User getAuthor() { return author; } public void setAuthor(User author) { this.author = author; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }