介绍
任何企业应用程序都通过存储和检索大量数据来执行数据库操作。 尽管所有可用的存储管理技术,应用程序开发人员通常都很难有效地执行数据库操作。
通常,Java开发人员使用大量代码,或使用专有框架与数据库交互,而使用JPA,与数据库交互的负担显着减少。 它构成了对象模型(Java程序)和关系模型(数据库程序)之间的桥梁。
关系模型和对象模型之间的不匹配
关系对象以表格格式表示,而对象模型以对象格式的互连图表示。 在从关系数据库中存储和检索对象模型时,由于以下原因会发生一些不匹配:
Granularity :对象模型比关系模型更具粒度。
Subtypes :所有类型的关系数据库都不支持子类型(意味着继承)。
Identity :与对象模型一样,关系模型在写同等性时不会暴露身份。
Associations :关系模型在查看对象域模型时无法确定多个关系。
Data navigation :对象网络中对象之间的数据导航在两个模型中都是不同的。
什么是JPA?
Java Persistence API是一组类和方法,用于将大量数据持久存储到Oracle Corporation提供的数据库中。
哪里可以使用JPA?
为了减轻为关系对象管理编写代码的负担,程序员遵循“JPA Provider”框架,该框架允许与数据库实例轻松交互。 这里所需的框架由JPA接管。
JPA历史
早期版本的EJB,使用javax.ejb.EntityBean接口定义持久层与业务逻辑层相结合。
在介绍EJB 3.0时,持久层被分离并指定为JPA 1.0(Java Persistence API)。 该API的规范与JAVA EE5的规范一起于2006年5月11日使用JSR 220发布。
JPA 2.0于2009年12月10日作为Java Community Process JSR 317的一部分与JAVA EE6的规范一起发布。
JPA 2.1于2013年4月22日使用JSR 338以JAVA EE7规范发布。
JPA提供商
JPA是一个开源API,因此Oracle,Redhat,Eclipse等各种企业供应商通过在其中添加JPA持久性风格来提供新产品。 其中一些产品包括:
Hibernate, Eclipselink, Toplink, Spring Data JPA, etc.