From bf02497b7c31e2660babbea5a2d5fe306abab2cd Mon Sep 17 00:00:00 2001 From: Jesus Boadas Date: Wed, 26 Apr 2017 15:30:04 -0400 Subject: [PATCH] Guide to JDO (#1736) * Guide to JDO * Guide to JDO * Guide to JDO * Guide To JDO --- .../java/com/baeldung/jdo/GuideToJDO.java | 78 ++++++++++++++++--- .../java/com/baeldung/jdo/GuideToJDOTest.java | 29 +++++-- 2 files changed, 93 insertions(+), 14 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java b/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java index e17004c149..fb7bd184ee 100644 --- a/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java +++ b/core-java/src/main/java/com/baeldung/jdo/GuideToJDO.java @@ -1,33 +1,55 @@ package com.baeldung.jdo; +import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; -import javax.jdo.JDOHelper; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; import javax.jdo.Query; import javax.jdo.Transaction; +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; +import org.datanucleus.metadata.PersistenceUnitMetaData; + public class GuideToJDO { private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); private Random rnd = new Random(); + private PersistenceUnitMetaData pumd; public static void main(String[] args) { new GuideToJDO(); } public GuideToJDO() { + CreateProperties(); CreateProducts(); ListProducts(); + UpdateProducts(); + ListProducts(); + DeleteProducts(); + ListProducts(); } + public void CreateProperties(){ + + pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumd.addClassName("com.baeldung.jdo.Product"); + pumd.setExcludeUnlistedClasses(); + pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); + pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); + pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); + pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); + pumd.addProperty("datanucleus.autoCreateSchema", "true"); + + } + public void CreateProducts() { - PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); PersistenceManager pm = pmf.getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { @@ -51,26 +73,64 @@ public class GuideToJDO { } pm.close(); } - } - @SuppressWarnings("unchecked") + @SuppressWarnings("rawtypes") + public void UpdateProducts(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(Product.class, "name == \"Phone\""); + Collection result = (Collection) query.execute(); + Product product = (Product) result.iterator().next(); + product.setName("Android Phone"); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings("rawtypes") + public void DeleteProducts(){ + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); + PersistenceManager pm = pmf.getPersistenceManager(); + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(Product.class, "name == \"Android Phone\""); + Collection result = (Collection) query.execute(); + Product product = (Product) result.iterator().next(); + pm.deletePersistent(product); + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) public void ListProducts() { - PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); PersistenceManager pm = pmf.getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { tx.begin(); - @SuppressWarnings("rawtypes") - Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price < 1"); + Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price > 10"); List products = (List) q.execute(); Iterator iter = products.iterator(); while (iter.hasNext()) { Product p = iter.next(); LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); } - + LOGGER.log(Level.INFO, "--------------------------------------------------------------"); tx.commit(); } finally { if (tx.isActive()) { @@ -80,4 +140,4 @@ public class GuideToJDO { pm.close(); } } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java b/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java index 6ab7481118..b8a8d2adb3 100644 --- a/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java +++ b/core-java/src/test/java/com/baeldung/jdo/GuideToJDOTest.java @@ -6,18 +6,28 @@ import static org.junit.Assert.fail; import java.util.Iterator; import java.util.List; -import javax.jdo.JDOHelper; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; import javax.jdo.Query; import javax.jdo.Transaction; +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; +import org.datanucleus.metadata.PersistenceUnitMetaData; import org.junit.Test; public class GuideToJDOTest { @Test public void givenProduct_WhenNewThenPerformTransaction() { - PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); + PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumd.addClassName("com.baeldung.jdo.Product"); + pumd.setExcludeUnlistedClasses(); + pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); + pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); + pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); + pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); + pumd.addProperty("datanucleus.autoCreateSchema", "true"); + + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); PersistenceManager pm = pmf.getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { @@ -43,7 +53,16 @@ public class GuideToJDOTest { @Test public void givenProduct_WhenQueryThenExist() { - PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); + PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumd.addClassName("com.baeldung.jdo.Product"); + pumd.setExcludeUnlistedClasses(); + pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); + pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); + pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); + pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); + pumd.addProperty("datanucleus.autoCreateSchema", "true"); + + PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); PersistenceManager pm = pmf.getPersistenceManager(); Transaction tx = pm.currentTransaction(); try { @@ -66,7 +85,7 @@ public class GuideToJDOTest { pmf.close(); - PersistenceManagerFactory pmf2 = JDOHelper.getPersistenceManagerFactory("Tutorial"); + PersistenceManagerFactory pmf2 = new JDOPersistenceManagerFactory(pumd, null); PersistenceManager pm2 = pmf2.getPersistenceManager(); Transaction tx2 = pm2.currentTransaction(); try { @@ -93,4 +112,4 @@ public class GuideToJDOTest { } -} +} \ No newline at end of file