Crie um relacionamento simples entre entidades criando duas classes de entidades com um relacionamento, registrando as entidades com o ObjectGrid e armazenamento as instâncias da entidade no cache.
Customer.java
@Entity
public class Customer
{
@Id String id;
String firstName;
String surname;
String address;
String phoneNumber;
}
Esta classe inclui informações sobre o cliente, tais como
nome, endereço e número de telefone.Order.java
@Entity
public class Order {
@Id String orderNumber;
Date date;
@ManyToOne(cascade=CascadeType.PERSIST) Customer customer;
String itemName;
int quantity;
double price;
}
Neste exemplo, uma referência para um objeto Customer
substitui o atributo customerName. A referência possui uma anotação que
indica uma relação muitos-para-um. Um relacionamento muitos-para-um
indica que cada pedido possui um cliente, mas vários pedidos podem
fazer referência ao mesmo cliente. O modificador de anotação em cascata
indica que, se o gerenciador de entidade persistir o objeto Order, ele
também deverá persistir o objeto Customer. Se você decidir não definir a opção de
persistência em cascata, que é a opção padrão, deve persistir manualmente
o objeto Customer com o 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();
// Close the session (optional in Version
7.1.1 and later) for improved performance
s.close();
}
}
Este aplicativo é semelhante ao aplicativo de exemplo que
está na etapa anterior.
No exemplo anterior, apenas uma única classe
Order é registrada. O WebSphere eXtreme
Scale
detecta e automaticamente inclui a referência na entidade Customer e uma
instância Customer para John Smith é criada e referenciada
a partir do novo objeto Order. Como resultado, o novo cliente é persistido
automaticamente, porque o relacionamento entre duas ordens inclui o modificador em cascata, que requer que cada objeto seja persistido. Quando o
objeto Order é localizado, o entity manager automaticamente localiza o
objeto Customer associado e insere uma referência no objeto.