/**
* 其中EntityManagerFactory相当于hibernate 中SessionFactory
* EntityManager相当于hibernate中session
*/
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;
import com.jpa.java.orm.Customer;
public class EntityTest {
private EntityManagerFactory entityManagerFactory=null;
private EntityManager entityManager=null;
private EntityTransaction entityTransaction=null;
@Before
public void init(){
entityManagerFactory=Persistence.createEntityManagerFactory("jpa");
entityManager=entityManagerFactory.createEntityManager();
entityTransaction=entityManager.getTransaction();
entityTransaction.begin();
}
@After
public void dstroy(){
entityTransaction.commit();//一般是提交事务的时候刷新缓存
entityManager.close();
entityManagerFactory.close();
}
//find方法相当于hibernate中get方法
@Test
public void testFind() {
//直接向数据库发送sql
Customer cus=entityManager.find(Customer.class,1);
//会先执行sql语句再打印---------
System.out.println("-------------------------------");
System.out.println(cus.getInfo());
}
//getReference相当于hibernate中的load方法
@Test
public void testLoad(){
//先返回代理,再向数据库发送sql
Customer cus=entityManager.getReference(Customer.class,1);
//会先打印---------再执行sql语句()
System.out.println("-------------------------------");
System.out.println(cus.getInfo());
}
//persist相当于hibernate中的save方法
@Test //若设置值则会抛出异常
public void testSave(){
//持久化操作
Customer cus=new Customer();
cus.setUsername("追风");
cus.setAge(23);
cus.setEmail("12122121@qq.com");
entityManager.persist(cus);
}
//类似与hibernate的delete方法。只能移除持久化对象,hibernate能移除普通对象
@Test
public void testRemove(){
//Customer cus=new Customer(); //非持久化对象
//cus.setId(2);
Customer cus=entityManager.find(Customer.class, 2); //创建持久化对象
entityManager.remove(cus);
}
//类似与hibernate的saveOrUpdate方法
//传入一个临时对象-->会创建一个新的对象,把临时对象的属性赋值到新的对象中,然后对习对象做insert持久化操作
@Test
public void testMerge1(){
//临时对象
Customer cus=new Customer();
cus.setUsername("fangxu");
cus.setAge(21);
cus.setEmail("322332@qq.com");
//新对象
Customer customer=entityManager.merge(cus);
//新对象中有ID临时对象中没有id
System.out.println(cus.getId()+customer.getId());
}
@Test
public void testMerge2(){
//游离对象
Customer cus=new Customer();
cus.setUsername("fangxu");
cus.setAge(21);
cus.setEmail("322332@qq.com");
cus.setId(4);//会先查看对象存在不存在,存在查询,不存在再insert.有字段更新会自动进行update操作
//新对象
Customer customer=entityManager.merge(cus);
//新对象中有ID临时对象中没有id
System.out.println("cus.id="+cus.getId()+" customer.id="+customer.getId()+" customer="+customer.getInfo());
}
//同hibernate中session的flush发相同
@Test
public void testFlush(){
Customer cus=entityManager.find(Customer.class,1);
System.out.println(cus);
cus.setUsername("hawei");
entityManager.flush();//
}
}
* 其中EntityManagerFactory相当于hibernate 中SessionFactory
* EntityManager相当于hibernate中session
*/
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;
import com.jpa.java.orm.Customer;
public class EntityTest {
private EntityManagerFactory entityManagerFactory=null;
private EntityManager entityManager=null;
private EntityTransaction entityTransaction=null;
@Before
public void init(){
entityManagerFactory=Persistence.createEntityManagerFactory("jpa");
entityManager=entityManagerFactory.createEntityManager();
entityTransaction=entityManager.getTransaction();
entityTransaction.begin();
}
@After
public void dstroy(){
entityTransaction.commit();//一般是提交事务的时候刷新缓存
entityManager.close();
entityManagerFactory.close();
}
//find方法相当于hibernate中get方法
@Test
public void testFind() {
//直接向数据库发送sql
Customer cus=entityManager.find(Customer.class,1);
//会先执行sql语句再打印---------
System.out.println("-------------------------------");
System.out.println(cus.getInfo());
}
//getReference相当于hibernate中的load方法
@Test
public void testLoad(){
//先返回代理,再向数据库发送sql
Customer cus=entityManager.getReference(Customer.class,1);
//会先打印---------再执行sql语句()
System.out.println("-------------------------------");
System.out.println(cus.getInfo());
}
//persist相当于hibernate中的save方法
@Test //若设置值则会抛出异常
public void testSave(){
//持久化操作
Customer cus=new Customer();
cus.setUsername("追风");
cus.setAge(23);
cus.setEmail("12122121@qq.com");
entityManager.persist(cus);
}
//类似与hibernate的delete方法。只能移除持久化对象,hibernate能移除普通对象
@Test
public void testRemove(){
//Customer cus=new Customer(); //非持久化对象
//cus.setId(2);
Customer cus=entityManager.find(Customer.class, 2); //创建持久化对象
entityManager.remove(cus);
}
//类似与hibernate的saveOrUpdate方法
//传入一个临时对象-->会创建一个新的对象,把临时对象的属性赋值到新的对象中,然后对习对象做insert持久化操作
@Test
public void testMerge1(){
//临时对象
Customer cus=new Customer();
cus.setUsername("fangxu");
cus.setAge(21);
cus.setEmail("322332@qq.com");
//新对象
Customer customer=entityManager.merge(cus);
//新对象中有ID临时对象中没有id
System.out.println(cus.getId()+customer.getId());
}
@Test
public void testMerge2(){
//游离对象
Customer cus=new Customer();
cus.setUsername("fangxu");
cus.setAge(21);
cus.setEmail("322332@qq.com");
cus.setId(4);//会先查看对象存在不存在,存在查询,不存在再insert.有字段更新会自动进行update操作
//新对象
Customer customer=entityManager.merge(cus);
//新对象中有ID临时对象中没有id
System.out.println("cus.id="+cus.getId()+" customer.id="+customer.getId()+" customer="+customer.getInfo());
}
//同hibernate中session的flush发相同
@Test
public void testFlush(){
Customer cus=entityManager.find(Customer.class,1);
System.out.println(cus);
cus.setUsername("hawei");
entityManager.flush();//
}
}