侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

绿泡泡:___zze,添加备注来意

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

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

zze
zze
2019-10-19 / 0 评论 / 0 点赞 / 303 阅读 / 2497 字

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
JPA

评论区