一,简介
JPA - java persistence API- 在 2006年5月正式发布,虽然作为EJB3.0的一部分,但是它可以独立使用,而且在j2se里也包含JPA包。JPA是面向关系数据库的,目前不支持xml,OODBMS等其他类型的数据库持久化。
JPA包括三部分:java持久化API,查询语言,OR映射元数据。
二,基本概念:
(1)实体和实体管理器: 实体由实体管理器管理。实体管理器负责实体的创建,删除和查询。
实体管理器有两种:容器托管和应用程序托管。
(1.1)容器托管的实体管理器:除了负责管理实体之外,还负责事务管理。有两种方法获得容器托管的实体管理器:使用@PersistenceContext注释的依赖注入,和,通过JNDI查找。
(1.2)应用程序托管的实体管理器:实体的创建,删除,查询和其他与试题管理器关联的生命周期时间都由应用程序内自定义的软件控制的实体管理器负责。此时,EntityManager实例通过试题管理器工厂获得。
(2)持久性上下文:容器托管的实体管理器支持两种持久性上下文的生存周期。其一,事务持续时间内。其二,扩展作用域持久性上下文-生存期跨越多个事务。
(3)实体元数据:描述实体的持久化方式,并通知持久化软件该实体需要被持久化。
(4)实体状态:新建,被托管,被释放,已删除。新建的实体实例是还未被托管或者持久化的实体。被托管的实体实例已经被持久化,因而与一个持久性上下文关联。被释放的实体实例曾经被托管,但是现在已经不与持久化上下文关联。已删除的实体实例是一个具有持久性标志,与一个持久化上下文关联,并且已经进入待删除队列的实体。
(5)实体关系:一对一(@OneToOne),一对多(@OneToMany),多对一(@ManyToOne),多对多(@ManyToMany)。