Guía de aprendizaje del gestor de entidades: creación de relaciones de entidad

Crear una relación simple entre entidades creando dos clases de entidad con una relación, registrando las entidades con el ObjectGrid, y almacenando las instancias de entidades en la memoria caché.

Procedimiento

  1. Cree la entidad customer, que se utiliza para almacenar los detalles del cliente independientemente del objeto Order. A continuación se muestra un ejemplo de la entidad customer:
    Customer.java
    @Entity
    public class Customer
    {
        @Id String id;
        String firstName;
        String surname;
        String address;
        String phoneNumber;
    }
    Esta clase incluye información sobre el cliente, como el nombre, la dirección y el número de teléfono.
  2. Cree el objeto Order, que es parecido al objeto Order del tema Guía de aprendizaje del gestor de entidades: creación de una clase de entidad. A continuación se muestra un ejemplo del objeto Order:
    Order.java
    
    @Entity
    public class Order
    {
        @Id String orderNumber;
        Date date;
        @ManyToOne(cascade=CascadeType.PERSIST) Customer customer;
        String itemName;
        int quantity;
        double price;
    }
    En este ejemplo, una referencia a un objeto Customer sustituye el atributo customerName. La referencia tiene una anotación que indica una relación de muchos con uno. Una relación de muchos con uno indica que cada pedido tiene un cliente, aunque varios pedidos pueden hacer referencia al mismo cliente. El modificador de anotación en cascada indica que si el gestor de entidades persiste el objeto Order, también debe persistir el objeto Customer. Si decide no establecer la opción de persistencia en cascada, que es la opción predeterminada, debe persistir manualmente el objeto Customer con el objeto Order.
  3. Utilizando las entidades, defina las correlaciones para la instancia de ObjectGrid. Cada correlación se define para una entidad específica, y una entidad se denomina Order y la otra Customer. En la siguiente aplicación de ejemplo se muestra cómo almacenar y recuperar un pedido de cliente:
    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();
    // Cierre la sesión (opcional en la versión 7.1.1 y posterior) para un mejor rendimiento
    	s.close();
        }
    }
    Esta aplicación es parecida a la aplicación de ejemplo del paso anterior. En el ejemplo anterior, sólo se registra un objeto Order de una sola clase. WebSphere eXtreme Scale detecta e incluye automáticamente la referencia a la entidad Customer y se crea una instancia Customer para John Smith, a la que se hace referencia desde el nuevo objeto Order. Como resultado, el nuevo cliente se persiste automáticamente porque la relación entre dos pedidos incluye el modificador en cascada, que requiere que cada objeto sea persistente. Cuando se encuentra el objeto Order, el gestor de entidad encuentra automáticamente el objeto Customer asociado e inserta una referencia al objeto.