侧边栏壁纸
博主头像
张种恩博主等级

一个能运维的 JPG 搬运工

  • 累计撰写 694 篇文章
  • 累计创建 58 个标签
  • 累计收到 17 条评论

JPA(4)之API介绍和抽取JPAUtil工具类

张种恩
2019-10-19 / 0 评论 / 0 点赞 / 226 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2020-02-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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();
  }
}
0

评论区