Anwendungen rufen gewöhnlich zuerst eine ObjectGrid-Referenz und anschließend über diese Referenz ein Session-Objekt für jeden Thread ab. Session-Objekte können nicht von mehreren Threads gemeinsam genutzt werden. Es ist eine zusätzliche Methode im Session-Objekt verfügbar, die Methode "getEntityManager". Diese Methode gibt eine Referenz auf einen EntityManager für diesen Thread zurück. Die Schnittstelle "EntityManager" kann die Schnittstellen "Session" und "ObjectMap" für alle Anwendungen ersetzen. Sie können diese EntityManager-APIs verwenden, wenn der Client Zugriff auf die definierten Entitätsklassen hat.
Die Methode "getEntityManager" ist in einem Session-Objekt verfügbar. Das folgende Codebeispiel veranschaulicht, wie eine lokale ObjectGrid-Instanz erstellt wird und wie der Zugriff auf EntityManager erfolgt. Einzelheiten zu allen unterstützten Methoden finden Sie in der Beschreibung der Schnittstelle "EntityManager" in der API-Dokumentation.
ObjectGrid og =
ObjectGridManagerFactory.getObjectGridManager().createObjectGrid("intro-grid");
Session s = og.getSession();
EntityManager em = s.getEntityManager();
Es besteht eine Eins-zu-eins-Beziehung zwischen dem Session-Objekt und dem EntityManager-Objekt. Sie können das EntityManager-Objekt mehrfach verwenden.
Eine Entität persistent zu speichern bedeutet, dass der Status einer neuen Entität in einem ObjectGrid-Cache gespeichert wird. Nach Aufruf der Methode "persist" befindet sich die Entität im Status "Verwaltet". Die Operation "persist" ist eine transaktionsorientierte Operation, und die neue Entität wird nach der Festschreibung der Transaktion im ObjectGrid-Cache gespeichert.
Order order = new Order(123);
em.persist(order);
order.setX();
...
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
Die Methode "remove" ist wie die Methode "persist" eine transaktionsorientierte Operation. Das folgende Beispiel zeigt die Transaktionsgrenzen durch den Aufruf der Methoden "begin" und "commit" auf.
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.remove(foundOrder );
em.getTransaction().commit();
Die Entität muss verwaltet sein, bevor sie entfernt werden kann. Sie können dies erreichen, indem Sie die Methode "find" innerhalb der Transaktionsgrenzen aufrufen. Rufen Sie anschließend die Methode "remove" in der Schnittstelle "EntityManager" auf.
Die Methode "invalidate" verhält sich ähnlich wie die Methode "remove", ruft aber keine Loader-Plug-ins auf. Verwenden Sie diese Methode, um Entitäten aus dem ObjectGrid zu entfernen, aber sie im Back-End-Datenspeicher beizubehalten.
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.invalidate(foundOrder );
em.getTransaction().commit();
Die Entität muss verwaltet sein, bevor sie ungültig gemacht werden kann. Sie können dies erreichen, indem Sie die Methode "find" innerhalb der Transaktionsgrenzen aufrufen. Nach dem Aufruf der Methode "find" können Sie die Methode "invalidate" in der Schnittstelle "EntityManager" aufrufen.
Die Methode "update" ist ebenfalls eine transaktionsorientierte Operation. Die Entität muss verwaltet sein, damit Aktualisierungen angewendet werden können.
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
foundOrder.date = new Date(); // Datum des Auftrags aktualisieren
em.getTransaction().commit();
Im vorherigen Beispiel wird die Methode "persist" nach der Aktualisierung der Entität nicht aufgerufen. Die Entität wird im ObjectGrid-Cache aktualisiert, wenn die Transaktion festgeschrieben wird.
Mit der flexiblen Abfragesteuerkomponente können Sie Entitäten über die Anwendungsprogrammierschnittstelle "EntityManager" abrufen. Erstellen Sie mit Hilfe der Abfragesprache von ObjectGrid Abfragen vom Typ SELECT über eine Entität oder ein objektbasiertes Schema. Unter "Abfrageschnittstelle" wird detailliert erläutert, wie Sie die Abfragen mit Hilfe der Anwendungsprogrammierschnittstelle "EntityManager" ausführen können. Weitere Informationen zur Verwendung von Abfragen finden Sie in der Dokumentation zur API "Query".
Eine Entitätsabfragewarteschlange ist eine warteschlangenähnliche Datenstruktur, die einer Entitätsabfrage zugeordnet ist. Sie wählt alle Entitäten aus, die der WHERE-Bedingung im Abfragefilter entsprechen, und reiht sie in eine Warteschlange ein. Anschließend können Clients interaktiv Entitäten aus dieser Warteschlange abrufen. Weitere Informationen finden Sie im Abschnitt Abfragewarteschlangen für Entitäten.