JPA的增删改查
增 persist
@Test
public void persist(){
//获得操作对象
EntityManager manager = JpaUtils.getEntityManager();
//启动事务
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
//封装数据
Customer c = new Customer();
c.setCustName("Miss u");
//保存数据
manager.persist(c);
//提交事务
transaction.commit();
//关闭
manager.close();
}
删 remove
注意:JPA通过OID删除数据,而且对象必须是持久态对象
@Test
public void remove(){
//获得操作对象
EntityManager manager = JpaUtils.getEntityManager();
//启动事务
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
//封装数据
//注意:JPA通过OID删除数据,而且对象必须是持久态对象
Customer c = manager.find(Customer.class, 55L);
//删除数据
manager.remove(c);
//提交事务
transaction.commit();
//关闭
manager.close();
}
改 merge
注意:JPA通过OID更新数据,而且对象可以是持久态对象,可以不是
@Test
public void update(){
//获得操作对象
EntityManager manager = JpaUtils.getEntityManager();
//启动事务
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
//封装数据
//注意:JPA通过OID更新数据,而且对象可以是持久态对象,可以不是
Customer c = manager.find(Customer.class, 54L);
//Customer c = new Customer();
c.setCustId(54L);
c.setCustName("Hello");
//更新数据
manager.merge(c);
//提交事务
transaction.commit();
//关闭
manager.close();
}
查
- 通过OID查询,使用find是无延迟得,等同于Hibernate得get
@Test
public void find(){
//获得操作对象
EntityManager manager = JpaUtils.getEntityManager();
Customer c = manager.find(Customer.class, 54L);
manager.close();
System.out.println(c.getCustName());
}
- 通过OID查询,使用getReference是有延迟得,等同于Hibernate得load
@Test
public void reference(){
//获得操作对象
EntityManager manager = JpaUtils.getEntityManager();
Customer customer = manager.getReference(Customer.class, 54L);
System.out.println(customer.getCustName());
manager.close();
}