Tutoriel du gestionnaire d'entités : mise en forme de relations d'entités

Création d'une relation simple entre des entités en créant deux classes entité avec une relation, en enregistrant les entités avec l'ObjectGrid et en stockant les instances d'entités dans le cache.

Procédure

  1. Créez l'entité customer qui sert à pour stocker les informations sur les clients indépendamment de l'objet Order. Exemple d'entité customer :
    Customer.java
    @Entity
    public class Customer
    {
        @Id String id;
        String firstName;
        String surname;
        String address;
        String phoneNumber;
    }
    Cette classe comprend des informations sur le client, telles que le nom, l'adresse et le numéro de téléphone.
  2. Créez l'objet Order, qui est similaire à l'objet Order de la rubrique Tutoriel du gestionnaire d'entités : création d'une classe entité. Ci-après, un exemple d'objet Order :
    Order.java
    
    @Entity
    public class Order {
        @Id String orderNumber;
        Date date;
        @ManyToOne(cascade=CascadeType.PERSIST) Customer customer;
        String itemName;
        int quantity;
        double price;
    }
    Dans cet exemple, une référence à l'objet Customer remplace l'attribut customerName. La référence possède une annotation qui indique une relation plusieurs à un. Ce type de relation indique que chaque commande a un client, mais que plusieurs commandes peuvent référencer le même client. Le modificateur d'annotations en cascade indique que si EntityManager conserve l'objet Order, il doit également conserver l'objet Customer. Si vous décidez de ne pas définir l'option de conservation de la cascade (option par défaut), vous devez conserver manuellement l'objet Customer avec l'objet Order.
  3. A l'aide des entités, définissez les mappes pour l'instance ObjectGrid. Chaque mappe est définie pour une entité spécifique : l'une est nommée Order, l'autre Customer. L'exemple d'application suivant illustre le stockage et la récupération d'une commande client :
    Application.java
    
    public class Application
    {
        static public void main(String [] args)
            throws Exception
        {
            ObjectGrid og = 
    					ObjectGridManagerFactory.getObjectGridManager().createObjectGrid();
            og.registerEntities(new Class[] {Order.class});
    
            Session s = og.getSession();
            EntityManager em = s.getEntityManager();
    
            em.getTransaction().begin();
    
            Customer cust = new Customer();
            cust.address = "Main Street";
            cust.firstName = "John";
            cust.surname = "Smith";
            cust.id = "C001";
            cust.phoneNumber = "5555551212";
    
            Order o = new Order();
            o.customer = cust;
            o.date = new java.util.Date();
            o.itemName = "Widget";
            o.orderNumber = "1";
            o.price = 99.99;
            o.quantity = 1;
    
            em.persist(o);
            em.getTransaction().commit();
    
            em.getTransaction().begin();
            o = (Order)em.find(Order.class, "1");
            System.out.println("Found order for customer: " 
    					+ o.customer.firstName + " " + o.customer.surname);
            em.getTransaction().commit();
    	// Fermer la session (facultatif dans les versions 7.1.1 et ultérieures) pour améliorer les performances
    	s.close();
        }
    }
    Cette application est similaire à l'exemple d'application de l'étape précédente. Dans l'exemple précédent, seule une classe Order a été enregistrée. WebSphere eXtreme Scale détecte et inclut automatiquement la référence dans l'entité Customer et une instance Customer pour John Smith est créée et référencée depuis le nouvel objet Order. Par conséquent, le nouveau client est automatiquement conservé, car la relation entre deux commandes inclut le modificateur de cascade, qui requiert la conservation de chaque objet. Lorsque l'objet Order est détecté, le gestionnaire d'entités recherche l'objet Customer associé et insère une référence dans l'objet.