ObjectQuery チュートリアル - ステップ 1

以下のステップにより、ObjectMap API を使用して、オンライン・ショップのオーダー情報を保管するローカルのメモリー内 ObjectGrid を引き続き開発できます。 マップのスキーマを定義し、そのマップに対して照会を実行します。

手順

  1. マップ・スキーマを持つ ObjectGrid を作成します。

    マップに対応した 1 つのマップ・スキーマを持つ ObjectGrid を作成して、オブジェクトをキャッシュに挿入し、 後でシンプルな照会を使用してこのオブジェクトを検索します。

    OrderBean.java
    
    
    public class OrderBean implements Serializable {
        String orderNumber;
        java.util.Date date;
        String customerName;
        String itemName;
        int quantity;
        double price;
    }
  2. 1 次キーを定義します。

    このコードは、OrderBean オブジェクトを示しています。キャッシュ内のすべてのオブジェクトは、(デフォルトで) シリアライズ可能でなければならないため、このオブジェクトは、java.io.Serializable インターフェースを実装します。

    orderNumber 属性は、オブジェクトの主キーです。次のプログラム例は、スタンドアロン・モードで実行できます。 このチュートリアルは、objectgrid.jar ファイルがクラスパスに追加されている Eclipse Java プロジェクトで実行してください。

    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");
    
            // Define the schema
            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();
    }
    }

    この eXtreme Scale アプリケーションでは、最初に、自動的に生成される名前で、ローカル ObjectGrid が初期化されます。 次に、このアプリケーションは、BackingMap および QueryConfig を作成します。この QueryConfig は、マップに関連付けられる Java 型、マップの 1 次キーとなるフィールド名、および、オブジェクト内のデータにアクセスする方法を定義します。 次に、Session を取得して ObjectMap インスタンスを取得し、トランザクション内のマップに OrderBean オブジェクトを挿入します。

    キャッシュ内にデータがコミットされた後、ObjectQuery でクラス内の任意のパーシスタント・フィールドを使用して、OrderBean を検索できます。 パーシスタント・フィールドとは、一時的な修飾子を持たないフィールドのことです。BackingMap には索引を定義していないため、 ObjectQuery は、Java リフレクションを使用してマップ内の各オブジェクトをスキャンする必要があります。

次のタスク

ObjectQuery チュートリアル - ステップ 2 では、索引を使用して照会を最適化する方法について説明します。