⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customertest.java

📁 JPA入门文章源码
💻 JAVA
字号:
package entity;

import junit.framework.JUnit4TestAdapter;
import org.junit.After;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import javax.persistence.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

/**
 * @author Antonio Goncalves
 */
public class CustomerTest {
    private static String PERSISTENCE_UNIT_NAME = "watermelonPU";
    private static Calendar calendar;

    private EntityManagerFactory emf;
    private EntityManager em;
    private EntityTransaction trans;

    public static junit.framework.Test suite() {
        return new JUnit4TestAdapter(CustomerTest.class);
    }

    @BeforeClass
    public static void initCalendar() {
        calendar = GregorianCalendar.getInstance();
    }

    @Before
    public void init() {
        emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        em = emf.createEntityManager();
        trans = em.getTransaction();
    }

    @After
    public void close() {
        em.close();
        emf.close();
    }

    @Test(expected = Exception.class)
    public void createCustomerWithoutAddress() {
        calendar.set(1940, 10, 9);
        Date dateOfBirth = calendar.getTime();
        Customer customer = new Customer("John", "Lennon", "+411909", "john@lenon.com", dateOfBirth);

        // Persists a customer
        trans.begin();
        em.persist(customer);
        trans.commit();
    }

    @Test
    public void createCustomerWithAddress() {
        calendar.set(1940, 10, 9);
        Date dateOfBirth = calendar.getTime();
        Customer customer = new Customer("John", "Lennon", "+411909", "john@lenon.com", dateOfBirth);
        Address homeAddress = new Address("Abbey Road", "London", "SW14", "UK");
        customer.setHomeAddress(homeAddress);

        // Persists a customer
        trans.begin();
        em.persist(customer);
        trans.commit();
        Long customerId = customer.getId();
        Long addressId = homeAddress.getId();

        // Finds the customer by primary key
        customer = em.find(Customer.class, customerId);
        assertEquals(customer.getEmail(), "john@lenon.com");
        assertEquals(customer.getAge(), 66);
        assertEquals(customer.getHomeAddress().getCountry(), "UK");

        // Updates the customer
        trans.begin();
        customer.setEmail("john@beatles.co.uk");
        homeAddress.setCountry("US");
        trans.commit();

        // Finds the customer by primary key
        customer = em.find(Customer.class, customerId);
        assertEquals(customer.getEmail(), "john@beatles.co.uk");
        assertEquals(customer.getAge(), 66);
        assertEquals(customer.getHomeAddress().getCountry(), "US");

        // Deletes the customer
        trans.begin();
        em.remove(customer);
        trans.commit();

        assertNull("Customer should have been deleted", em.find(Customer.class, customerId));
        assertNull("Address should have been deleted", em.find(Address.class, addressId));
    }

    @Test(expected = IllegalArgumentException.class)
    public void createCustomerWithInvalidPhone() {
        calendar.set(1940, 10, 9);
        Date dateOfBirth = calendar.getTime();
        Customer customer = new Customer("John", "Lennon", "411909", "john@lenon.com", dateOfBirth);

        // Persists a customer
        trans.begin();
        em.persist(customer);
        trans.commit();
    }

    @Test
    public void findCustomers() {
        calendar.set(1940, 10, 9);
        Customer customer1 = new Customer("John", "Lennon", "+411909", "john@lenon.com", calendar.getTime());
        customer1.setHomeAddress(new Address("Abbey Road", "London", "SW14", "UK"));
        calendar.set(1940, 7, 7);
        Customer customer2 = new Customer("Ringo", "Starr", "+187445", "ringo@star.com", calendar.getTime());
        customer2.setHomeAddress(new Address("Abbey Road", "London", "SW14", "UK"));
        calendar.set(1943, 2, 25);
        Customer customer3 = new Customer("Georges", "Harrison", "+44877899", "georges@harrison.com", calendar.getTime());
        customer3.setHomeAddress(new Address("Abbey Road", "London", "SW14", "US"));
        calendar.set(1942, 6, 18);
        Customer customer4 = new Customer("Paul", "McCartney", "+41871109", "paul@mccartney.com", calendar.getTime());
        customer4.setHomeAddress(new Address("Abbey Road", "London", "SW14", "US"));

        // Persists a customers
        trans.begin();
        em.persist(customer1);
        em.persist(customer2);
        em.persist(customer3);
        em.persist(customer4);
        trans.commit();

        Query query;
        List<Customer> customers;

        // Finds all the customers
        query = em.createQuery("SELECT c FROM Customer c");
        customers = query.getResultList();
        assertEquals(customers.size(), 4);

        // Finds all the customers ordered by lastname
        query = em.createQuery("SELECT c FROM Customer c ORDER BY c.lastname");
        customers = query.getResultList();
        assertEquals(customers.size(), 4);

        // Finds all the customers with a name = Ringo
        query = em.createQuery("SELECT c FROM Customer c WHERE c.firstname='John'");
        customers = query.getResultList();
        assertEquals(customers.size(), 1);

        // Finds all the customers living in the US
        query = em.createQuery("SELECT c FROM Customer c WHERE c.homeAddress.country='US'");
        customers = query.getResultList();
        assertEquals(customers.size(), 2);

        // Finds all the customers living in the US (using parameters)
        query = em.createQuery("SELECT c FROM Customer c WHERE c.homeAddress.country=:cnty");
        query.setParameter("cnty", "US");
        customers = query.getResultList();
        assertEquals(customers.size(), 2);

        // Finds all the customers with a name containing "Mc" or MC
        query = em.createQuery("SELECT c FROM Customer c WHERE UPPER(c.lastname) LIKE :keyword");
        query.setParameter("keyword", "%MC%");
        customers = query.getResultList();
        assertEquals(customers.size(), 1);

        // Deletes the customers
        trans.begin();
        em.remove(customer1);
        em.remove(customer2);
        em.remove(customer3);
        em.remove(customer4);
        trans.commit();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -