アプリケーションは通常、最初に ObjectGrid 参照を取得し、次にその参照からそれぞれのスレッドのセッションを取得します。 セッションはスレッド間で共有することはできません。 セッションの追加メソッドである getEntityManager メソッドが使用可能です。 このメソッドは、このスレッド用に使用するエンティティー・マネージャー への参照を戻します。EntityManager インターフェース は、すべてのアプリケーションの Session インターフェースと ObjectMap インターフェースを置換することができます。 クライアントが定義済みのエンティティー・クラスに対するアクセス権を持つ場合、これらの EntityManager API を使用することができます。
getEntityManager メソッドは Session オブジェクトで 使用可能です。以下のコードの例は、ローカル ObjectGrid インスタンスの作成方法 および EntityManager へのアクセスの方法を示しています。サポートされているすべてのメソッドの詳細については、API 資料で EntityManager インターフェースを 参照してください。
ObjectGrid og =
ObjectGridManagerFactory.getObjectGridManager().createObjectGrid("intro-grid");
Session s = og.getSession();
EntityManager em = s.getEntityManager();
Session オブジェクトと EntityManager オブジェクトの間には、1 対 1 のリレーションシップが存在します。EntityManager オブジェクトは複数回使用することができます。
エンティティーの永続化とは、新規エンティティーの状態を ObjectGrid キャッシュに保存することを意味します。 persist メソッドが呼び出されると、エンティティーは管理対象状態になります。永続化はトランザクションの操作であり、新規エンティティーはトランザクションのコミット後に ObjectGrid キャッシュに保管されます。
Order order = new Order(123);
em.persist(order);
order.setX();
...
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
remove メソッドは、persist メソッドと同様、トランザクション操作です。 以下の例は、begin メソッドと commit メソッドを呼び出すことによってトランザクション境界を示しています。
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.remove(foundOrder );
em.getTransaction().commit();
エンティティーは、トランザクション境界の内側で find メソッドを呼び出すことによって管理された後でないと、除去できません。 その後で、EntityManager インターフェースで remove メソッドを呼び出します。
invalidate メソッドの動作は、remove メソッドとよく似ていますが、Loader プラグインを呼び出すことはありません。 ObjectGrid からエンティティーを除去するが、バックエンド・データ・ストアではそのまま保持するには、このメソッドを使用します。
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.invalidate(foundOrder );
em.getTransaction().commit();
エンティティーは、トランザクション境界の内側で find メソッドを呼び出すことによって管理された後でないと、無効化できません。 find メソッドを呼び出した後、EntityManager インターフェースで invalidate メソッドを呼び出すことができます。
update メソッドもトランザクション操作です。 更新を適用する前に、エンティティーを管理する必要があります。
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
foundOrder.date = new Date(); // update the date of the order
em.getTransaction().commit();
上の例では、エンティティーが更新された後で persist メソッドは呼び出されていません。 エンティティーは、トランザクションのコミット時に ObjectGrid キャッシュで更新されます。
柔軟な照会エンジンにより、EntityManager API を使用してエンティティーを取得することができます。ObjectGrid 照会言語を使用することにより、エンティティーまたはオブジェクト・ベースのスキーマで SELECT タイプ照会を作成します。Query インターフェースでは、EntityManager API を使用して 照会を実行する方法を詳細に説明しています。照会の使用について詳しくは、Query API を参照してください。
エンティティー QueryQueue は、 キューに似たデータ構造体であり、エンティティー照会に 関連付けられます。これは、照会フィルターの WHERE 条件に一致する すべてのエンティティーを選択し、結果のエンティティーをキューに 入れます。その後、クライアントは、このキューからエンティティーを繰り返し取り出す ことができます。詳しくは、エンティティー照会キューを参照してください。