Persistence
Persistence类使用于获取EntityManagerFactory实例,该类包含一个名为createEntityManagerFactory的静态方法。
// 创建EntityManagerFactory String persistenceUnitName = "Jpa-helloword"; EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
Persistence提供了两个创建EntityManagerFactory的方法:
Map<String, Object> map = new HashMap<>(); map.put("hibernate.show_sql", false); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, map);
该方法中可以起到修改persistence.xml的作用。
上边的代码尽管persistence.xml配置内配置项“hibernate.format_sql”属性为true,但是我们在创建EntityManagerFactory的方法中传入了参数后,会覆盖persistence.xml中的配置项的值。
EntityManagerFactory
EntityManagerFactory接口主要用来创建EnittyManager实例,该接口约定了如下4个方法:
- createEntityManager():用于创建实体管理器对象实例。
- createEntityManager(Map map):用于创建实体管理器对象实例的重载方法,Map参数用于提供EntityManager的属性。
- isOpen():检查EntityManagerFactory是否处于打开状态。实体管理器工厂创建后一直处于打开状态,除非调用close()方法将其关闭。
- close():关闭EntityFactoryFactory。EntityManagerFactory关闭后将释放所有资源,isOpen()方法测试将返回false,其它方法将不能调用,否则将导致IllegalStateException异常。