| /******************************************************************************* |
| * 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"); |
| } |
| |
| } |