一篇文章带你搞定 JPA 中的 API 对象(Persistence/EntityManagerFactory/EntityManager/EntityTransaction)

我们已经学习了:一篇文章带你搞定 JPA 的基本使用

知道了 JPA 的操作步骤:

1.加载配置文件创建实体管理器工厂
2.根据实体管理器工厂,创建实体管理器
3.创建事务对象,开启事务
4.增删改查操作
5.提交事务
6.释放资源

接下来具体看下其中的 API 的功能特性。

一、Persistence对象

 //1.加载配置文件创建工厂(实体管理器工厂)对象
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
Persisitence:静态方法(根据持久化单元名称创建实体管理器工厂)
				createEntityMnagerFactory(持久化单元名称)
作用:创建实体管理器工厂

Persistence对象主要作用是用于获取EntityManagerFactory对象的 。通过调用该类的createEntityManagerFactory静态方法,根据配置文件中持久化单元名称创建EntityManagerFactory

二、EntityManagerFactory

//2.通过实体管理器工厂获取实体管理器
EntityManager em = factory.createEntityManager();
EntityManagerFactory :获取EntityManager对象
方法:createEntityManager
	* 内部维护的很多的内容
				内部维护了数据库信息,
				维护了缓存信息
				维护了所有的实体管理器对象
				再创建EntityManagerFactory的过程中会根据配置创建数据库表
	* EntityManagerFactory的创建过程比较浪费资源
			特点:线程安全的对象
				多个线程访问同一个EntityManagerFactory不会有线程安全问题
	* 如何解决EntityManagerFactory的创建过程浪费资源(耗时)的问题?
			思路:创建一个公共的EntityManagerFactory的对象
	* 静态代码块的形式创建EntityManagerFactory

EntityManagerFactory 接口主要用来创建 EntityManager 实例

由于EntityManagerFactory 是一个线程安全的对象(即多个线程访问同一个EntityManagerFactory 对象不会有线程安全问题),并且EntityManagerFactory 的创建极其浪费资源,所以在使用JPA编程时,我们可以对EntityManagerFactory 的创建进行优化,只需要做到一个工程只存在一个EntityManagerFactory 即可

三、EntityManager

 //3.获取事务对象,开启事务
EntityTransaction tx = em.getTransaction(); //获取事务对象

EntityManager对象:实体类管理器
	* getTransaction : 获取事务对象
	* presist : 保存
	* merge  : 更新
	* remove : 删除
	* find/getRefrence : 根据id查询

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

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

四、EntityTransaction

//开启事务
tx.begin();
EntityTransaction对象 : 事务
	* begin:开启事务
	* commit:提交事务
	* rollback:回滚

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

你可能感兴趣的:(Spring,Data,JPA,学习笔记)