A interface EntityManager separa aplicativos do estado de suspensão no armazenamento de dados da grade do servidor.
O custo do uso da interface EntityManager não é alto e depende do tipo de trabalho sendo feito. Sempre use a interface EntityManager e otimize a lógica de negócios crucial após o aplicativo ser concluído. É possível retrabalhar qualquer código que utilize as interfaces EntityManager para usar mapas e tuplas. Geralmente, esse retrabalho de código pode ser necessário para 10% do código.
Se você usar relacionamentos entre objetos, o impacto no desempenho será menor, porque um aplicativo que usa mapas precisa gerenciar esses relacionamentos da mesma forma que a interface EntityManager.
Os aplicativos que usam a interface EntityManager não precisam fornecer uma implementação ObjectTransformer. Os aplicativos são otimizados automaticamente.
@Entity
public class Person {
@Id
String ssn;
String firstName;
@Index
String middleName;
String surname;
}
Este é um trecho de código para localizar e atualizar a entidade:Person p = null;
s.begin();
p = (Person)em.find(Person.class, "1234567890");
p.middleName = String.valueOf(inner);
s.commit();
A seguir, está o mesmo código utilizando Mapas e Tuplas: Tuple key = null;
key = map.getEntityMetadata().getKeyMetadata().createTuple();
key.setAttribute(0, "1234567890");
// The Copy Mode is always NO_COPY for entity maps if not using COPY_TO_BYTES.
// Either we need to copy the tuple or we can ask the ObjectGrid to do it for us:
map.setCopyMode(CopyMode.COPY_ON_READ);
s.begin();
Tuple value = (Tuple)map.get(key);
value.setAttribute(1, String.valueOf(inner));
map.update(key, value);
value = null;
s.commit();
Esses fragmentos de código têm o mesmo
resultado, e um aplicativo pode utilizar um ou ambos os fragmentos.O segundo fragmento de código mostra como utilizar mapas diretamente e como trabalhar com as tuplas (os pares de chave e valor). A tupla de valor tem três atributos: firstName, middlename e surname, indexado em 0, 1 e 2. A tupla de chave tem um único atributo e o número de ID é indexado em zero. É possível ver como as Tuplas são criadas utilizando os métodos EntityMetadata#getKeyMetaData ou EntityMetadata#getValueMetaData. Utilize esses métodos para criar as Tuplas para uma Entidade. Não é possível implementar a interface Tuple e passar uma instância em sua implementação de Tupla.