Geralmente os aplicativos primeiro obtêm uma referência do ObjectGrid e, depois, uma Sessão dessa referência para cada encadeamento. As sessões não podem ser compartilhadas entre encadeamentos. Um método extra em Session, o método getEntityManager, está disponível. Este método retorna uma referência para um gerenciador de entidades para uso para este encadeamento. A interface de EntityManager pode substituir as interfaces de Session e ObjectMap para todos os aplicativos. É possível utilizar essas APIs de EntityManager se o cliente tiver acesso às classes de entidade definidas.
O método getEntityManager está disponível em um objeto Session. O exemplo de código a seguir ilustra como criar uma instância de ObjectGrid local e acessar EntityManager. Consulte a interface EntityManager na documentação da API para obter detalhes sobre todos os métodos suportados.
ObjectGrid og =
ObjectGridManagerFactory.getObjectGridManager().createObjectGrid("intro-grid");
Session s = og.getSession();
EntityManager em = s.getEntityManager();
Existe um relacionamento um para um entre o objeto Session e o objeto EntityManager. É possível utilizar o objeto EntityManager mais de uma vez.
A persistência de uma entidade significa salvar o estado de uma nova entidade em um cache ObjectGrid. Depois de chamar o método "persist", a entidade fica no estado "managed". A operação persist é transacional e a nova entidade fica armazenada no cache do ObjectGrid depois da confirmação do cache.
Order order = new Order(123);
em.persist(order);
order.setX();
...
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
O método remove, a exemplo do método persist, é uma operação transacional. O exemplo a seguir mostra o limite transacional ao chamar os métodos begin e commit.
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.remove(foundOrder );
em.getTransaction().commit();
Primeiro, a entidade deve estar no estado managed antes que a remoção seja possível; o que pode ser conseguido chamando o método find dentro do limite transacional. Depois, chame o método remove na interface de EntityManager.
O método invalidate se comporta de maneira muito semelhante ao método remove, mas não chama nenhum plug-in do Utilitário de Carga. Use este método para remover entidades do ObjectGrid, mas para preservá-las no armazém de dados de backend.
em.getTransaction().begin();
Order foundOrder = (Order)em.find(Order.class, new Integer(123));
em.invalidate(foundOrder );
em.getTransaction().commit();
Primeiro, a entidade deve ser gerenciada antes que possa ser invalidada, o que pode ser conseguido chamando o método find dentro do limite transacional. Após chamar o método find, será possível chamar o método invalidate na interface de EntityManager.
O método update também é uma operação transacional. A entidade deve ser gerenciada antes que quaisquer atualizações possam ser aplicadas.
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();
No exemplo precedente, o método persist não é chamado depois da atualização da entidade. A entidade é atualizada no cache do ObjectGrid quando a transação é confirmada.
Com o mecanismo de consulta flexível, é possível recuperar entidades utilizando a API do EntityManager. Crie consultas do tipo SELECT para uma entidade ou esquema baseado em Objeto, utilizando a linguagem de consulta do ObjectGrid. A interface de consulta explica em detalhes como é possível executar as consultas utilizando a API do EntityManager. Consulte a API de Query para obter mais informações sobre o uso de consultas.
Uma QueryQueue de entidade é uma estrutura de dados semelhante a uma fila associada com uma consulta de entidade. Ela seleciona todas as entidades que correspondem à condição WHERE no filtro de consulta e coloca as entidades do resultado em uma fila. Os clientes podem, então, recuperar iterativamente as entidades dessa fila. Consulte Filas de Consulta da Entidade para obter mais informações.