L'interface EntityManager sépare les applications de l'état conservé dans son magasin de données de grille de données de serveurs.
Le coût d'utilisation de l'interface EntityManager n'est pas élevé et dépend du type de travail effectué. Utilisez toujours l'interface EntityManager et optimisez la logique métier essentielle lorsque l'application est complète. Vous pouvez modifier le code qui utilise des interfaces EntityManager pour utiliser des mappes et des bloc de données. En règle générale, cette modification peut être nécessaire pour 10 pourcent du code.
Si vous utilisez des relations entre les objets, l'impact sur les performances est plus faible, car une application qui utilise des mappes doit gérer ces relations de la même manière que l'interface EntityManager.
Les applications qui utilisent l'interface EntityManager n'ont pas besoin de fournir d'implémentation de ObjectTransformer. Les applications sont optimisées automatiquement.
@Entity
public class Person {
@Id
String ssn;
String firstName;
@Index
String middleName;
String surname;
}
Voici un code permettant de rechercher l'entité et de la mettre à
jour :Person p = null;
s.begin();
p = (Person)em.find(Person.class, "1234567890");
p.middleName = String.valueOf(inner);
s.commit();
Voici le même code, qui utilise des mappes et des nuplets : Tuple key = null;
key = map.getEntityMetadata().getKeyMetadata().createTuple();
key.setAttribute(0, "1234567890");
// Le mode de copie est toujours NO_COPY pour les mappes d'entités si COPY_TO_BYTES n'est pas utilisé.
// Nous devons copier le nuplet ou demander à ObjectGrid de le faire à notre place :
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();
Ces deux fragments de code génèrent le même
résultat et une application peut utiliser l'un ou l'autre.Le second fragment de code montre comment utiliser directement les mappes et utiliser les nuplets (paires de clé/valeur). Le bloc de données value a trois attributs : firstName, middlename, et surname, indexed at 0, 1, and 2. Le bloc de données key possède un seul attribut ; numéro d'ID est indexé à zéro. Vous pouvez voir comment les nuplets sont créés à l'aide des méthodes EntityMetadata#getKeyMetaData ou EntityMetadata#getValueMetaData. Vous devez utiliser ces méthodes pour créer des nuplets pour une entité. Vous ne pouvez pas implémenter l'interface Tuple et transmettre une instance de votre implémentation de Tuple.