一、JPA中API的操作。
/**
*
*/
package com.jpa.helloword;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author 徐庶
* @date 2016年12月10日
*/
public class JPATest {
private EntityManagerFactory entityManagerFactory ;
private EntityManager entityManager;
private EntityTransaction transaction;
@Before
public void init(){
entityManagerFactory=Persistence.createEntityManagerFactory("JPA_1");//该名称就是persistence-unit的name
entityManager=entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
transaction.begin();
}
@After
public void destroy(){
transaction.commit();
entityManager.close();
entityManagerFactory.close();
}
@Test
public void testFind() {
//该方法等同于Hibernate中Session的get方法
Customer customer=entityManager.find(Customer.class, 1);
System.out.println("----------------");
System.out.println(customer);
}
@Test
public void getReference(){
//该方法等同于Hibernate中Session的load方法
Customer customer = entityManager.getReference(Customer.class, 1);
System.out.println("----------------");
System.out.println(customer);
}
@Test
public void testPersistence(){
//该方法等同于Hibernate的save方法,但是该对象如果有id时,执行该方法会抛出异常。而Hibernate的save方法不会。
Customer customer=new Customer();
customer.setName("jk");
customer.setAge(12);
customer.setBirth(new Date());
customer.setCreateDate(new Date());
customer.setEmail("jk@163.com");
//customer.setId(2);
entityManager.persist(customer);
}
@Test
public void testRemove(){
/**
* 该方法等同于Hibernate的delete方法,但是该方法只能移除持久化对象,不能移除游离对象。
* 而Hibernate的delete方法可以移除游离对象。
* Customer customer=new Customer();
customer.setId(1);
*/
Customer customer = entityManager.find(Customer.class, 1);
entityManager.remove(customer);
}
}