本章节将介绍 JPA 中常用的 API,只有学习和了解了这些 API 才能更好的了解 JPA 的用法。
Persistence 类主要作用是用于获取 EntityManagerFactory 对象的。通过调用该类的 createEntityManagerFactory() 静态方法,根据配置文件中配置的持久化单元名称创建 EntityManagerFactory。
实例:使用“openJPA”持久化单元名称创建 EntityManagerFactory 对象。代码如下:
String NAME = "openJPA"; EntityManagerFactory emf = Persistence.createEntityManagerFactory(NAME);
EntityManagerFactory 接口主要用来创建 EntityManager 实例。EntityManagerFactory 是用于与持久单元的实体管理器工厂交互的接口。
当应用程序结束使用实体管理器工厂时,和/或在应用程序关闭时,应用程序应该关闭实体管理器工厂。一旦一个 EntityManagerFactory 被关闭,它的所有实体管理器都被认为处于关闭状态。
由于 EntityManagerFactory 是一个线程安全的对象(即多个线程访问同一个对象不会有线程安全问题),并且EntityManagerFactory 的创建非常浪费资源。
所以,在使用 JPA 编程时,可以对 EntityManagerFactory 进行优化,只需要做到一个工程内部只存在一个EntityManagerFactory 即可。
实例:使用给定的持久化单元名称创建 EntityManagerFactory 实例。代码如下:
String NAME = "openJPA"; EntityManagerFactory emf = Persistence.createEntityManagerFactory(NAME);
EntityManager 是用于与持久化上下文交互的接口。在 JPA 规范当中,EntityManager 是完成持久化操作的核心对象。
JPA 的实体类作为普通的 Java 对象,只有在使用 EntityManager 实例将其持久化后才会变成持久化对象。
EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映射的管理。
它可以用来管理和更新 Entity Bean,根据主键查找 Entity Bean,还可以通过 JPQL 语句查询实体。
可以通过调用 EntityManager 的方法完成获取事务,以及持久化数据库的操作。
实例:使用 EntityManagerFactory 对象创建 EntityManager 对象,代码如下:
String NAME = "openJPA"; EntityManagerFactory emf = Persistence.createEntityManagerFactory(NAME); EntityManager em = emf.createEntityManager();
EntityManager 提供的常用方法:
getTransaction() 获取事务对象
persist() 保存操作
merge() 更新操作
remove() 删除操作
find() 查询操作
createNativeQuery() 创建 Query 操作
在 JPA 规范中,EntityTransaction 接口主要用来完成事务操作。
在 JPA 中可以使用 EntityManager.getTransaction() 获取 EntityTransaction 接口实例,EntityTransaction 实例主要提供如下功能:
begin() 开启事务
commit() 提交事务
rollback() 回滚事务
更多 JPA 的 API 将在后续章节中娓娓道来……