JPA的PAI测试
2015-08-22 23:46
573 查看
/**
* 其中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();//
}
}
相关文章推荐
- Aizu - 2555 Everlasting Zero 模拟
- hdoj 1022 Train problem 1【栈 的理解】
- 调用Process.waitfor导致的进程挂起
- sleep() wait() yeild()三者之间的区别?
- hdu 1239 Calling Extraterrestrial Intelligence Again
- Debug Assertion Failed! File: afx.inl
- PAT 1014. Waiting in Line (30)
- unresolved external symbol _winmain@16
- rails yaml with expression or variable (Using ERB in YAML Configuration File)
- 【LeetCode】(70)Climbing Stairs (Easy)
- POJ 1995 Raising Modulo Numbers【快速幂】
- CodeForcesGym 100676G Training Camp
- HN OJ 13375 Flowery Trails (spfa的路径遍历)
- Aizu 2302 On or Off
- poj1363——Rails
- 转:CDC,CPaintDC,CClientDC,CWindowDC区别
- (转载)BeginPaint和GetDC有什么区别?
- HDU2141Can you find it? (二分计算计算Ai+Bj+Ck = X)
- HDU 5344(MZL's xor-(ai+aj)的异或和)
- BFS(最短路) HDOJ 4308 Saving Princess claire_