Tutorial do ObjectQuery - Etapa 1

Com as seguintes etapas, você poderá continuar desenvolvendo um ObjectGrid local de memória que armazena informações de pedidos para uma loja varejista on-line usando as APIs do ObjectMap. Defina um esquema para o mapa e execute uma consulta em relação ao mapa.

Procedimento

  1. Crie um ObjectGrid com um esquema de mapa.

    Crie um ObjectGrid com um esquema de mapa para o mapa; em seguida, insira um objeto no cache e recupere-o posteriormente, utilizando uma consulta simples.

    OrderBean.java
    
    
    public class OrderBean implements Serializable {
        String orderNumber;
        java.util.Date date;
        String customerName;
        String itemName;
        int quantity;
        double price;
    }
  2. Defina a chave principal.

    O código anterior mostra um objeto OrderBean. Este objeto implementa a interface java.io.Serializable porque todos os objetos no cache devem (por padrão) ser Serializáveis.

    O atributo orderNumber é a chave principal do objeto. O programa de exemplo a seguir pode ser executado no modo independente. É necessário seguir esse tutorial em um projeto Eclipse Java que tenha o arquivo objectgrid.jar incluído no caminho de classe.

    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 o 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();
    	// Close the session (optional in Version 
    7.1.1 and later) for improved performance
    s.close(); } }

    Esse aplicativo eXtreme Scale primeiro inicializa um ObjectGrid local com um nome gerado automaticamente. Em seguida, o aplicativo cria um BackingMap e um QueryConfig que definem qual tipo Java está associado ao mapa, o nome do campo que é a chave principal para o mapa e como acessar os dados no objeto. A seguir, você obtém uma Sessão para adquirir a instância do ObjectMap e inserir um objeto OrderBean no mapa em uma transação.

    Depois que os dados forem confirmados no cache, será possível usar o ObjectQuery para localizar o OrderBean usando qualquer um dos campos persistentes na classe. Campos persistentes são aqueles que não possuem o modificador temporário. Como nenhum índice foi definido no BackingMap, o ObjectQuery deverá varrer cada objeto no mapa usando o reflexo Java.

O que Fazer Depois

O Tutorial do ObjectQuery - Etapa 2 demonstra como um índice pode ser usado para otimizar a consulta.