您的位置:首页 > 大数据 > 人工智能

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();//

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: