在JPA规范中,EntityManager是所有持久化操作的中枢。实体作为普通Java对象,只有在调用EntityManager将其持久化后,才会变成持久对象。
根据EntityManager对象的管理方式,有以下两种类型:
l 容器托管
容器托管的EntityManager对象最简单,不需要考虑EntityManager的连接和释放,以及事务的管理,这些操作都由容器来管理。容器托管的EntityManager对象必须在EJB容器中运行,而不能在web容器和JavaSE环境中运行。
l 应用托管
应用托管的EntityManager对象,需要手动管理EntityManager的连接和释放,以及事务管理。应用托管的EntityManager可以脱离EJB容器,而运行在web容器或JavaSE环境中。
1、EntityManagerFactory
在web容器或EJB容器中可以通过@PersistenceUnit来注入一个EntityManagerFactory对象,进而获取EntityManager对象;也可以直接通过@PersistenceContext来直接注入一个EntityManager对象。
在JavaSE项目中,可以通过Persistence来创建EntityManagerFactory对象,如下
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");