JPA的API介绍
Persistence对象
Persistence
对象主要作用是用于获取 EntityManagerFactory
对象的 。通过调用该类的 createEntityManagerFactory
静态方法,根据配置文件中持久化单元名称创建 EntityManagerFactory
。
//1. 创建 EntitymanagerFactory
@Test
String unitName = "myJpa";
EntityManagerFactory factory= Persistence.createEntityManagerFactory(unitName);
EntityManagerFactory
EntityManagerFactory
接口主要用来创建 EntityManager
实例。
//创建实体管理类
EntityManager em = factory.createEntityManager();
由于 EntityManagerFactory
是一个线程安全的对象(即多个线程访问同一个 EntityManagerFactory
对象不会有线程安全问题),并且 ntityManagerFactory
的创建极其浪费资源,所以在使用 JPA 编程时,我们可以对 EntityManagerFactory
的创建进行优化,只需要做到一个工程只存在一个 EntityManagerFactory
即可。
EntityManager
在 JPA 规范中, 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工具类
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("myJpa");
}
/**
* 使用管理器工厂生产一个管理器对象
*
* @return
*/
public static EntityManager getEntityManager() {
return em.createEntityManager();
}
}
评论区