Con los siguientes pasos, podrá seguir desarrollando un ObjectGrid local en memoria que almacena la información de pedidos para una tienda al detalle en línea mediante las API ObjectMap. Defina un esquema para la correlación y ejecute una consulta en la correlación.
Cree un ObjectGrid con un esquema de correlación para la correlación y luego inserte un objeto en la memoria y más adelante recupérelo utilizando una consulta simple.
OrderBean.java
public class OrderBean implements Serializable {
String orderNumber;
java.util.Date date;
String customerName;
String itemName;
int quantity;
double price;
}
El código anterior muestra un objeto OrderBean. Este objeto implementa la interfaz java.io.Serializable porque todos los objetos de la memoria caché se deben poder serializar (de forma predeterminada).
El atributo orderNumber es la clave primaria del objeto. El siguiente programa de ejemplo se puede ejecutar en una modalidad autónoma. Debe seguir esta guía de aprendizaje en un proyecto Eclipse Java que tenga el archivo objectgrid.jar añadido a la classpath.
Application.java
package querytutorial.basic.step1;
import java.util.Iterator;
import com.ibm.websphere.objectgrid.ObjectGrid;
import com.ibm.websphere.objectgrid.ObjectGridManagerFactory;
import com.ibm.websphere.objectgrid.ObjectMap;
import com.ibm.websphere.objectgrid.Session;
import com.ibm.websphere.objectgrid.config.QueryConfig;
import com.ibm.websphere.objectgrid.config.QueryMapping;
import com.ibm.websphere.objectgrid.query.ObjectQuery;
public class Application
{
static public void main(String [] args) throws Exception
{
ObjectGrid og = ObjectGridManagerFactory.getObjectGridManager().createObjectGrid();
og.defineMap("Order");
// Definir el esquema
QueryConfig queryCfg = new QueryConfig();
queryCfg.addQueryMapping(new QueryMapping("Order", OrderBean.class.getName(),
"orderNumber", QueryMapping.FIELD_ACCESS));
og.setQueryConfig(queryCfg);
Session s = og.getSession();
ObjectMap orderMap = s.getMap("Order");
s.begin();
OrderBean o = new OrderBean();
o.customerName = "John Smith";
o.date = new java.util.Date(System.currentTimeMillis());
o.itemName = "Widget";
o.orderNumber = "1";
o.price = 99.99;
o.quantity = 1;
orderMap.put(o.orderNumber, o);
s.commit();
s.begin();
ObjectQuery query = s.createObjectQuery("SELECT o FROM Order o WHERE o.itemName='Widget'");
Iterator result = query.getResultIterator();
o = (OrderBean) result.next();
System.out.println("Found order for customer: " + o.customerName);
s.commit();
// Cierre la sesión (opcional en la versión 7.1.1 y posterior) para un mejor rendimiento
s.close();
}
}
Esta aplicación eXtreme Scale primero inicializa un ObjectGrid local con un nombre generado automáticamente. A continuación, la aplicación crea BackingMap y QueryConfig que define qué tipo Java se asocia a la correlación, el nombre del campo que es la clave primaria de la correlación y cómo acceder a los datos del objeto. A continuación, puede obtener una sesión para obtener la instancia de ObjectMap e insertar un objeto OrderBean en la correlación en una transacción.
Después de que se confirmen los datos en la memoria caché, puede utilizar ObjectQuery para encontrar el OrderBean utilizando uno cualquiera de los campos persistentes de la clase. Los campos persistentes son aquellos que no tienen el modificador transient. Puesto que no ha definido ningún índice en BackingMap, ObjectQuery debe explorar cada objeto de la correlación utilizando el reflejo Java.
Guía de aprendizaje de ObjectQuery - Paso 2 demuestra cómo se puede utilizar un índice para optimizar la consulta.