Ajustando o Desempenho da Interface EntityManager

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.

Retrabalhando o Código EntityManager para Mapas

Segue uma entidade de amostra:
@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.