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é.
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.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.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.