1.1 Persistence 对象
Persistence 对 象主 要作 用 是用 于 获 取 EntityManagerFactory 对 象 的 。 通过 调 用 该 类 的
createEntityManagerFactory 静态方法,根据配置文件中持久化单元名称创建 EntityManagerFactory。
@Test
String unitName = "myJpa";
EntityManagerFactory factory= Persistence.createEntityManagerFactory(unitName);
2 EntityManagerFactory
EntityManagerFactory 接口主要用来创建 EntityManager 实例
//创建实体管理类
EntityManager em = factory.createEntityManager();
由于 EntityManagerFactory 是一个线程安全的对象(即多个线程访问同一个 EntityManagerFactory
对象不会有线程安全问题),并且 EntityManagerFactory 的创建极其浪费资源,所以在使用 JPA 编程时,我
们 可 以 对 EntityManagerFactory 的 创 建 进 行 优 化 , 只 需 要 做 到 一 个 工 程 只 存 在 一 个
EntityManagerFactory 即可
3 EntityManager
在 JPA 规范中, EntityManager 是完成持久化操作的核心对象。实体类作为普通 java 对象,只有在调用
EntityManager 将其持久化后才会变成持久化对象。EntityManager 对象在一组实体类与底层数据源之间进行
O/R 映射的管理。它可以用来管理和更新 Entity Bean, 根椐主键查找 Entity Bean, 还可以通过 JPQL 语句
查询实体。
我们可以通过调用 EntityManager 的方法完成获取事务,以及持久化数据库的操作
方法说明:
getTransaction : 获取事务对象
persist : 保存操作
merge : 更新操作
remove : 删除操作
find/getReference : 根据 id 查询
4 EntityTransaction
在 JPA 规范中, EntityTransaction 是完成事务操作的核心对象,对于 EntityTransaction 在我们的
java 代码中承接的功能比较简单
begin:开启事务
commit:提交事务
rollback:回滚事务
5抽取 JPAUtil 工具类
package com.it.jpa.util;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public final class JpaUtil {
private static EntityManagerFactory em;
static {
em = Persistence.createEntityManagerFactory("myPersistUnit");
}
/**
* 使用管理器工厂生产一个管理器对象
*
* @return
*/
public static EntityManager getEntityManager() {
return em.createEntityManager();
}
}