Interacción con EntityManager

Normalmente, las aplicaciones en primer lugar obtienen una referencia de ObjectGrid y, a continuación, una Session de dicha referencia para cada hebra. Las sesiones no pueden compartirse entre hebras. Hay disponible un método adicional en el elemento Session, el método getEntityManager. Este método devuelve una referencia a un gestor de entidades para utilizar para esta hebra. La interfaz EntityManager puede sustituir las interfaces Session y ObjectMap para todas las aplicaciones. Puede utilizar estas API EntityManager si el cliente tiene acceso a las clases de entidad definidas.

Cómo obtener una instancia de EntityManager desde una sesión

El método getEntityManager está disponible en un objeto Session. El siguiente código de ejemplo ilustra cómo crear una instancia de ObjectGrid local y acceder a EntityManager. Consulte la interfaz EntityManager en la documentación de la API para ver detalles sobre todos los métodos soportados.

ObjectGrid og = 
ObjectGridManagerFactory.getObjectGridManager().createObjectGrid("intro-grid");
Session s = og.getSession();
EntityManager em = s.getEntityManager();

Existe una relación de uno a uno entre el objeto Session y el objeto EntityManager. Puede utilizar el objeto EntityManager más de una vez.

Persistencia de una entidad

Persistir una entidad quiere decir guardar el estado de una entidad nueva en una memoria caché ObjectGrid. Después de llamar al método de persistencia, la entidad pasa a estado gestionado. Persistir es una operación transaccional, y la nueva entidad se almacena en una memoria caché ObjectGrid después de que se confirme la transacción.

Cada entidad tiene un elemento BackingMap correspondiente en el que se almacenan los tuples. BackingMap tiene el mismo nombre que la entidad, y se crea al registrarse la clase. El siguiente ejemplo de código demuestra cómo crear un objeto Order utilizando la operación persist.
Order order = new Order(123);
em.persist(order);
order.setX();
...
El objeto Order se crea con la clave 123, y el objeto se pasa al método de persistencia. Puede seguir modificando el estado del objeto antes de confirmar la transacción.
Importante: El ejemplo anterior no incluye ningún límite transaccional necesario como, por ejemplo, begin y commit. ConsulteGuía de aprendizaje: Almacenamiento de información de pedidos en entidades para obtener más información.

Búsqueda de una entidad

Puede localizar la entidad en la memoria caché de ObjectGrid con el método find proporcionando una clave después de que la entidad se almacene en la memoria caché. Este método no requiere ningún límite transaccional, que es útil para la semántica de sólo lectura. El siguiente ejemplo ilustra que sólo se necesita una línea de código para buscar la entidad.
Order foundOrder = (Order)em.find(Order.class, new Integer(123));

Eliminación de una entidad

El método remove, igual que el método persist, es una operación transaccional. El ejemplo siguiente muestra el límite transaccional llamando a los métodos begin y commit.

em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.remove(foundOrder );
em.getTransaction().commit();

La entidad debe, en primer lugar, ser gestionada antes de que se pueda eliminar, para ello llame al método find dentro del límite transaccional. Llame al método remove en la interfaz EntityManager.

Invalidación de una entidad

El método invalidate se comporta de forma parecida al método remove, pero no invoca a los plug-ins Loader. Utilice este método para eliminar las entidades del ObjectGrid, sino para conservarlas en el almacén de datos de programa de fondo.

em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.invalidate(foundOrder );
em.getTransaction().commit();

La entidad debe, en primer lugar, ser gestionada antes de que se pueda invalidar, para ello llame al método find dentro del límite transaccional. Después de llamar al método find, puede llamar al método invalidate en la interfaz EntityManager.

Actualización de una entidad

El método update también es una operación transaccional. Para poder aplicar una actualización, primero se debe gestionar la entidad.

em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
foundOrder.date = new Date(); // actualiza la fecha del pedido
em.getTransaction().commit();

En el ejemplo anterior, no se llama al método persist después de que se actualice la entidad. La entidad se actualiza en la memoria caché ObjectGrid cuando la transacción se confirma.

Consultas y colas de consulta

Con el motor de consultas flexible, puede recuperar entidades mediante la API EntityManager. Cree consultas de tipo SELECT en una entidad o esquema basado en objetos mediante el lenguaje de consulta de ObjectGrid. La interfaz de consultas explica en detalle cómo ejecutar las consultas mediante la API EntityManager. Consulte el apartado sobre la API Query si desea información sobre cómo utilizar las consultas.

Una entidad QueryQueue es una estructura de datos en forma de cola asociada con una consulta de entidad. Selecciona todas las entidades que coinciden con la condición WHERE en el filtro de la consulta y coloca las entidades resultantes en una cola. Los clientes puede recuperar de manera iterativa las entidades de esta cola. Si desea más información, consulte Colas de consulta de entidades.