ãã¼ã¿ã¹ãã¢ã使ã£ãã«ã¦ã³ã¿ã¼ãµã¼ãã¬ããã®ãµã³ãã«
ããã¥ã¡ã³ããè¦ãªããããã¼ã¿ã¹ãã¢ã使ã£ãã«ã¦ã³ã¿ã¼ã®ãµã³ãã«ãä½ã£ã¦ã¿ã¾ããã
ã«ã¦ã³ã¿ã®å¤ãæ ¼ç´ããã¯ã©ã¹
データストアã§ã¯ãJava Data Objectsï¼JDOï¼ã®æ¨æºã¤ã³ã¿ã¼ãã§ã¤ã¹ãä»ãã¦ãä»»æã®ã¨ã³ãã£ãã£(ã¢ããã¼ã·ã§ã³ãä»ä¸ãããPOJO)ãæ°¸ç¶åã§ãã¾ããã«ã¦ã³ã¿ã¼ãã¤ããã®ã§ãã¾ãã¯ã«ã¦ã³ã¿ã®å¤ãæ ¼ç´ããã¨ã³ãã£ãã£ã使ãã¾ãã
package test; 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 Count { // ã¤ã³ã¹ã¿ã³ã¹ã¯1ã¤ãªã®ã§ãã©ã¤ããªã¼ãã¼ã¯åºå® @PrimaryKey private String id = "count"; @Persistent private Integer value = 0; public String getId() { return id; } public void setId(String id) { this.id = id; } public Integer getValue() { return value; } public void setValue(Integer value) { this.value = value; } }
ã«ã¦ã³ã¿ã¼ãµã¼ãã¬ãã
ãã¨ã¯ãã«ã¦ã³ã¿å¤ãèªã¿è¾¼ãã§æ´æ°ãããµã¼ãã¬ãããä½ãã°OKã
- PersistenceManagerãçæãã¦ã
-
- ã«ã¦ã³ã¿ã®å¤ãåå¾ã
- å¤ãããã°ãã¤ã³ã¯ãªã¡ã³ããã¦æ´æ°ãã¾ãã
- å¤ããªããã°æ°è¦ã«çæãã¦ä¿åãã¾ãã
-
- ãããã1ãã©ã³ã¶ã¯ã·ã§ã³ã§è¡ãã¾ããトランザクションはこのあたりを参考ã«ãã¦æ¸ãã¦ã¿ã¾ããã
package test; import java.io.IOException; import javax.jdo.JDOHelper; import javax.jdo.JDOObjectNotFoundException; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; import javax.jdo.Transaction; import javax.servlet.http.*; @SuppressWarnings("serial") public class CounterServlet extends HttpServlet { /** * GETã¡ã½ãããå¦çããã */ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); PersistenceManager pm = null; try { // PersistenceManager ãåå¾ pm = getPersistenceManager(); // ãã©ã³ã¶ã¯ã·ã§ã³ Transaction tx = pm.currentTransaction(); try { tx.begin(); // ãã©ã³ã¶ã¯ã·ã§ã³éå§ Count c = null; try { // å¤ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãåãåºãã c = pm.getObjectById(Count.class, "count"); c.setValue(c.getValue()+1); // å¤ãããã°ã¤ã³ã¯ãªã¡ã³ã } catch ( JDOObjectNotFoundException e ) { // ååã®ã¢ã¯ã»ã¹ã§å¤ããªãå ´åãããã«æ¥ãã c = new Count(); } // æ´æ° pm.makePersistent(c); // å¤ã表示ããã resp.getWriter().println("count :" + String.valueOf( c.getValue() )); tx.commit(); // ã³ããã } finally { if (tx.isActive()) tx.rollback(); } } finally { // PersistenceManager ã¯ã¯ãã¼ãºå¿ é ã if ( pm != null ) pm.close(); } } /** * {@link PersistenceManager}ãåå¾ããã * @return {@link PersistenceManager} */ public static PersistenceManager getPersistenceManager() { return pmfInstance.getPersistenceManager(); } /** * {@link PersistenceManagerFactory}ã¯ä½æã³ã¹ããé«ããããã®ã§ã¢ããªã±ã¼ã·ã§ã³ãã¨ã«ä¸æã«ãããã¨ã * æ¬æ¥ã¯å°ç¨ã®ãã«ãã¯ã©ã¹ãç¨æããã®ãããã¿ããã ããã¨ãããããµã¼ãã¬ããèªèº«ã«æãããã */ private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional"); }