jpa entityManager测试学习

package cn.jobs1127.jpa.crud;

import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class entityManager_CRUD_Test {
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
private EntityManager entityManager1;
@Before
public void init(){
/**
* createEntityManager():用于创建实体管理器对象实例。
* createEntityManager(Map map):用于创建实体管理器对象实例的重载方法,Map 参数用于提供 EntityManager 的属性。
*/
entityManagerFactory = Persistence.createEntityManagerFactory(“jpa-jobs1127”);
entityManager = entityManagerFactory.createEntityManager();
entityManager1 = entityManagerFactory.createEntityManager();

}
@After
public void destroy(){
    entityManager.close();
    entityManagerFactory.close();
}

/**
 * 类似于 hibernate 的 save 方法. 使对象由临时状态变为持久化状态. 
 * 和 hibernate 的 save 方法的不同之处: 若对象有 id, 则不能执行 insert操作, 而会抛出异常. 
 */
@Test
public void testPersistence(){
    System.out.println(entityManager1==entityManager);
    Customer customer = new Customer();
    customer.setAge(15);
    customer.setBirth(new Date());
    customer.setCreatedTime(new Date());
    customer.setEmail("bb@163.com");
    customer.setLastName("BB");
    //customer.setId(2);//有id,不执行,hibernate的session save时可以
    /**
     * 不开启事务是不会执行持久化操作的,
     * 可以猜测这个entityManager对象类似Hibernate的getCurrentSession()的session对象
     */
    entityManager.getTransaction().begin();
    entityManager.persist(customer);
    entityManager.getTransaction().commit();
    System.out.println(customer.getId());
}

@Test
public void testRemove1(){

// Customer customer = new Customer();
// customer.setId(2);//游离对象不可移除,会出错
//find类似于Hibernate的get()方法,找到的是持久化状态的对象
Customer customer = entityManager.find(Customer.class, 2);
//没开启事务是操作不成功的
entityManager.getTransaction().begin();
entityManager.remove(customer);
entityManager.getTransaction().commit();
}
@Test
public void testRemove2(){
// Customer customer = new Customer();
// customer.setId(2);//游离对象不可移除,会出错

    //getReference()类似于Hibernate的load()方法,拿到的是动态代理对象,处于detached状态
    Customer customer = entityManager.getReference(Customer.class, 3);
    //没开启事务是操作不成功的
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值