diff --git a/libraries/pom.xml b/libraries/pom.xml index 409b4df08d..d04234bf2f 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> parent-modules com.baeldung @@ -105,6 +105,13 @@ + + maven-compiler-plugin + + 1.8 + 1.8 + + @@ -326,6 +333,11 @@ datanucleus-xml 5.0.0-release + + org.datanucleus + datanucleus-jdo-query + 5.0.2 + net.openhft chronicle @@ -546,29 +558,29 @@ ${protonpack.version} - org.functionaljava - functionaljava - 4.7 - - - org.functionaljava - functionaljava-java8 - 4.7 + org.functionaljava + functionaljava + 4.7 - org.functionaljava - functionaljava-quickcheck - 4.7 - - - org.functionaljava - functionaljava-java-core - 4.7 + org.functionaljava + functionaljava-java8 + 4.7 - javax.cache - cache-api - ${cache.version} + org.functionaljava + functionaljava-quickcheck + 4.7 + + + org.functionaljava + functionaljava-java-core + 4.7 + + + javax.cache + cache-api + ${cache.version} com.hazelcast @@ -581,7 +593,7 @@ 1.0.1 - com.netopyr.wurmloch + com.netopyr.wurmloch wurmloch-crdt ${crdt.version} diff --git a/libraries/src/main/java/com/baeldung/jdo/query/MyApp.java b/libraries/src/main/java/com/baeldung/jdo/query/MyApp.java new file mode 100644 index 0000000000..384dde48d1 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jdo/query/MyApp.java @@ -0,0 +1,104 @@ +package com.baeldung.jdo.query; + +import java.util.List; + +import javax.jdo.JDOQLTypedQuery; +import javax.jdo.PersistenceManager; +import javax.jdo.PersistenceManagerFactory; +import javax.jdo.Query; + +import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; +import org.datanucleus.metadata.PersistenceUnitMetaData; + +public class MyApp { + + private static PersistenceManagerFactory pmf; + private static PersistenceManager pm; + + public static void main(String[] args) { + + defineDynamicPersistentUnit(); + createTestData(); + queryUsingJDOQL(); + queryUsingTypedJDOQL(); + queryUsingSQL(); + queryUsingJPQL(); + + } + + public static void createTestData(){ + ProductItem item1 = new ProductItem("supportedItem", "price less than 10", "SoldOut",5); + ProductItem item2 = new ProductItem("pro2", "price less than 10","InStock", 8); + ProductItem item3 = new ProductItem("pro3", "price more than 10","SoldOut", 15); + + if( pm != null ){ + pm.makePersistent(item1); + pm.makePersistent(item2); + pm.makePersistent(item3); + } + } + + public static void defineDynamicPersistentUnit(){ + + PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); + pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:mysql://localhost:3306/jdo_db"); + pumd.addProperty("javax.jdo.option.ConnectionUserName", "root"); + pumd.addProperty("javax.jdo.option.ConnectionPassword", "admin"); + pumd.addProperty("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver"); + pumd.addProperty("datanucleus.schema.autoCreateAll", "true"); + + pmf = new JDOPersistenceManagerFactory(pumd, null); + pm = pmf.getPersistenceManager(); + } + + public static void queryUsingJDOQL(){ + + Query query = pm.newQuery("SELECT FROM com.baeldung.jdo.query.ProductItem " + + "WHERE price < threshold PARAMETERS double threshold"); + List explicitParamResults = (List)query.execute(10); + + query = pm.newQuery("SELECT FROM " + + "com.baeldung.jdo.query.ProductItem WHERE price < :threshold"); + query.setParameters("double threshold"); + List explicitParamResults2 = (List)query.execute(10); + + query = pm.newQuery("SELECT FROM " + + "com.baeldung.jdo.query.ProductItem WHERE price < :threshold"); + List implicitParamResults = (List)query.execute(10); + + } + + public static void queryUsingTypedJDOQL(){ + + JDOQLTypedQuery tq = pm.newJDOQLTypedQuery(ProductItem.class); + QProductItem cand = QProductItem.candidate(); + tq=tq.filter(cand.price.lt(10).and(cand.name.startsWith("pro"))); + List results = tq.executeList(); + + } + + public static void queryUsingSQL(){ + + Query query = pm.newQuery("javax.jdo.query.SQL","select * from " + + "product_item where price < ? and status = ?"); + query.setClass(ProductItem.class); + query.setParameters(10,"InStock"); + List results = query.executeList(); + + } + + public static void queryUsingJPQL(){ + Query query = pm.newQuery("JPQL","select i from " + + "com.baeldung.jdo.query.ProductItem i where i.price < 10" + + " and i.status = 'InStock'"); + List results = (List) query.execute(); + + } + + public static void namedQuery(){ + Query query = pm.newNamedQuery( + ProductItem.class, "PriceBelow10"); + List results = query.executeList(); + + } +} diff --git a/libraries/src/main/java/com/baeldung/jdo/query/ProductItem.java b/libraries/src/main/java/com/baeldung/jdo/query/ProductItem.java new file mode 100644 index 0000000000..52221a7d97 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jdo/query/ProductItem.java @@ -0,0 +1,68 @@ +package com.baeldung.jdo.query; + +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.PersistenceAware; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +@PersistenceCapable(table = "product_item") +public class ProductItem { + + @PrimaryKey + @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT) + int id; + String name; + String description; + String status; + double price; + + public ProductItem(){ + + } + + public ProductItem(String name,String description,String status,double price){ + this.name=name; + this.description = description; + this.status = status; + this.price = price; + } + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public double getPrice() { + return price; + } + public void setPrice(double price) { + this.price = price; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + +} diff --git a/libraries/src/main/resources/META-INF/package.jdo b/libraries/src/main/resources/META-INF/package.jdo index d30207e2e0..d3cf501bb6 100644 --- a/libraries/src/main/resources/META-INF/package.jdo +++ b/libraries/src/main/resources/META-INF/package.jdo @@ -16,6 +16,14 @@ - + + + + + + + + \ No newline at end of file