JPA EntityManagerFactory接口的示例

JPA EntityManagerFactory Interface With Example

EntityManagerFactory实例的主要作用是支持EntityManager实例的实例化。 为特定数据库构造了EntityManagerFactory,并且通过有效地管理资源(例如套接字池),它提供了一种为该数据库构造多个EntityManager实例的有效方法。

EntityManagerFactory本身的实例化效率可能较低,但这是一次性操作。 一旦构建,它就可以为整个应用程序服务。 当应用程序使用完实体管理器工厂时,和/或在应用程序关闭时,应用程序应关闭实体管理器工厂。 一旦x0被关闭,其所有实体管理器均被视为处于关闭状态。

EntityManagerFactory接口-类图

此类图显示EntityManagerFactory接口提供的API列表。

EntityManagerFactory接口-方法摘要

这里列出了EntityManagerFactory接口的重要方法供您参考:

  • void addNamedEntityGraph(String graphName,EntityGraph EntityGraph) —此方法将EntityGraph的命名副本添加到EntityManagerFactory

  • void addNamedQuery(String name,Query query) —此方法用于将查询,类型查询或存储过程查询定义为命名查询,以便可以使用< x2>或createNamedStoredProcedureQuery方法。

  • void close()-此方法关闭工厂,释放其拥有的所有资源。

  • EntityManager createEntityManager()-这将创建一个新的由应用程序管理的EntityManager

  • EntityManager createEntityManager(地图地图)-此方法用于创建具有指定Map属性的新应用程序管理的EntityManager

  • EntityManager createEntityManager(SynchronizationType automationType) —此方法用于创建具有指定同步类型的新JTA应用程序管理的EntityManager

  • EntityManager createEntityManager(SynchronizationType automationType,地图映射) —此方法用于创建具有指定同步类型和属性映射的新JTA应用程序管理的EntityManager

  • Cache getCache()-访问与实体管理器工厂关联的缓存("第二级缓存")。

  • CriteriaBuilder getCriteriaBuilder() —返回用于创建CriteriaQuery对象的CriteriaBuilder实例。

  • 元模型getMetamodel() —返回元模型接口的实例,以访问持久性单元的元模型。

  • PersistenceUnitUtil getPersistenceUnitUtil()-此方法返回接口,提供对持久性单元实用程序方法的访问。

  • Map getProperties()-此方法获取对实体管理器工厂有效的属性和关联值。

  • 布尔值isOpen()-指示工厂是否已打开。

  • T unwrap(Class cls)-返回指定类型的对象,以允许访问提供程序特定的API。

  • EntityManagerFactory接口示例

    让我们通过示例演示EntityManagerFactory Interface的重要方法。 在此示例中,我们将使用createEntityManager()方法创建新的应用程序管理的EntityManager。

    步骤1:创建实体管理器工厂对象

    java.Persistence包中存在的EntityManagerFactory接口用于提供实体管理器。

    1
    EntityManagerFactory EntityManagerFactory = Persistence.createEntityManagerFactory("Persistence");

  • 持久性-Persistence是引导类,用于获取EntityManagerFactory接口。

  • createEntityManagerFactory()方法—此方法的作用是为命名的持久性单元创建并返回EntityManagerFactory。 因此,此方法包含在Persistence.xml文件中传递的持久性单元的名称。

  • 步骤2:从工厂获得实体管理器

    1
    EntityManager EntityManager = EntityManagerFactory.createEntityManager();

  • EntityManager — An EntityManager是一个接口。

  • createEntityManager()方法-创建一个新的应用程序管理的EntityManager

  • 步骤3:初始化实体管理器

    1
    EntityManager.getTransaction().begin();

  • getTransaction()方法-此方法返回资源级别的EntityTransaction对象。

  • begin()方法-此方法用于启动事务。

  • 步骤4:将数据保留到关系数据库中

    1
    EntityManager.persist(student);

  • persist()-此方法用于使实例成为托管实例和持久实例。 实体实例在此方法中传递。

  • 步骤5:完成交易

    1
    EntityManager.getTransaction().commit();

    步骤6:释放工厂资源

    1
    2
    EntityManager.close();
    EntityManagerFactory.close();

  • close()-此方法用于释放工厂资源。

  • 完整的例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private static void insertEntity() {
        EntityManagerFactory EntityManagerFactory = Persistence.createEntityManagerFactory("Persistence");
        EntityManager EntityManager = EntityManagerFactory.createEntityManager();
        EntityManager.getTransaction().begin();

        Student student = new Student("Ramesh","Fadatare","[email protected]");
        EntityManager.persist(student);
        EntityManager.getTransaction().commit();
        EntityManager.close();
        EntityManagerFactory.close();
    }

    在JPA教程-Java Persistence API上学习JPA的好资源

    进一步学习:

  • JPA EntityTransaction接口与示例

    JPA EntityTransaction接口与示例

    PSD CRUD示例

    JPA EntityManager接口与示例

    将JPA实体对象存储到数据库的不同方法

    从数据库检索JPA实体对象的不同方法

    从数据库中删除JPA实体对象的不同方法

    参考文献

  • https://docs.oracle.com/javaee/7/api/javax/Persistence/EntityManagerFactory.html

  • PSD素材

    PSD素材