blob: 12e41fcb8990b6dd4af48398b64d4ddf2ba6eafc [file]
/*******************************************************************************
* Copyright (c) 1998, 2012 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial impl
******************************************************************************/
package example;
import java.math.BigDecimal;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import model.Customer;
import model.Order;
import model.OrderLine;
/**
* Test the performance of reading an Order object model.
* @author James Sutherland
*/
public class ReadTest extends PerformanceTest {
public static void main(String[] args) throws Exception {
try {
ReadTest test = new ReadTest();
test.test();
} catch (Exception error) {
error.printStackTrace();
}
System.exit(0);
}
public void test() {
final EntityManagerFactory factory = Persistence.createEntityManagerFactory("read");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Order order = null;
for (int index = 0; index < 1000; index++) {
Customer customer = new Customer();
customer.setName("Customer-" + index);
order = new Order();
order.setDescription("Order-" + index);
order.setCustomer(customer);
order.addOrderLine(new OrderLine("line1", new BigDecimal(10)));
order.addOrderLine(new OrderLine("line2", new BigDecimal(5)));
order.addOrderLine(new OrderLine("line3", new BigDecimal(99)));
em.persist(order);
}
em.getTransaction().commit();
final long id = order.getId();
System.out.println("\n\nbegin read test");
this.executeRun("ReadTest", new Runnable() {
public void run() {
EntityManager em = factory.createEntityManager();
// TODO: Note you may need to comment the named query and use find instead for some JPA providers that don't seem to work with named queries...
Query query = em.createNamedQuery("findOrderById");
query.setParameter("id", id);
Order order = (Order)query.getSingleResult();
//Order order = em.find(Order.class, id);
order.getCustomer().toString();
order.getOrderLines().size();
em.close();
}
});
System.out.println("\nfinish read test");
}
}