抽取jpa工具类

JPA的API

EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
        //创建实体管理类
        EntityManager em = factory.createEntityManager();
        //获取事务对象
        EntityTransaction tx = em.getTransaction();
        //开启事务
        tx.begin();
        Customer c = new Customer();
        c.setCustName("传智播客");
        //保存操作
        em.persist(c);
        //提交事务
        tx.commit();
        //释放资源
        em.close();
        factory.close();

Persistence对象

  • 主要作用:创建实体管理类工程----->获取EntityManager对象。
    通过调用该类的createEntityManagerFactory静态方法,根据配置文件中的持久化单元名称创建EntityManager
String unitName = "myJpa";
EntityManagerFactory factory= Persistence.createEntityManagerFactory(unitName);

EntityManagerFactory接口

EntityManagerFactory接口主要用来创建EntityManager实例,其内部维护了很多信息

  • 比如数据库信息
  • 比如缓存信息
  • 维护所有的实体管理对象
//创建实体管理类
EntityManager em = factory.createEntityManager();
  • 创建EntityManagerFactory时十分浪费资源
    由于EntityManager是一个线程安全的对象,并且EntityManager的创建及其浪费资源,所以在使用jpa编程时,我们可以对EntityManagerFactory的创建进行优化,做到一个工程只存在一个EntityManagerFactory

EntityManager对象

在jap规范中,EntityManager是完成持久化操作的核心对象。实体类作为普通的java对象,只有在调用EntityManager将其持久化之后才会变成持久化对象。EntityManager对象在一组实体类和底层数据源之间进行O\R映射的管理。它可以用来管理和更新Entity Bean,根据主键查找Entity Bean,还可以通过JPQL语句查询实体

我们可以通过调用EntityManager的方法完成获取事务,以及持久化数据库的操作。

方法说明:

getTransaction : 获取事务对象
persist : 保存操作
merge : 更新操作
remove : 删除操作
find/getReference : 根据id查询

EntityTransaction

JPA 规范中, EntityTransaction是完成事务操作的核心对象,对于EntityTransaction在我们的java代码中承接的功能比较简单

begin:开启事务
commit:提交事务
rollback:回滚事务

JPAUtil工具类

抽取JPAUtil工具类

在这里插入图片描述

package cn.itcast.dao;

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

public final class JPAUtil {
	// JPA的实体管理器工厂:相当于Hibernate的SessionFactory
	private static EntityManagerFactory em;
	// 使用静态代码块赋值
	static {
		// 注意:该方法参数必须和persistence.xml中persistence-unit标签name属性取值一致
		em = Persistence.createEntityManagerFactory("myPersistUnit");
	}

	/**
	 * 使用管理器工厂生产一个管理器对象
	 * 
	 * @return
	 */
	public static EntityManager getEntityManager() {
		return em.createEntityManager();
	}
}

验证JPAUtil工具类

    @Test
    public void test() {
        //创建实体管理类
        EntityManager em = JPAUtil.getEntityManager();
        //获取事务对象
        EntityTransaction tx = em.getTransaction();
        //开启事务
        tx.begin();
        Customer c = new Customer();
        c.setCustName("传智播客");
        //保存操作
        em.persist(c);
        //提交事务
        tx.commit();
        //释放资源
        em.close();
    }
发布了254 篇原创文章 · 获赞 70 · 访问量 18万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览