JPA教程

关系型和对象模型之间的不匹配

关系对象表示以表格的形式,而对象模型表示的对象格式的相互连接的图形。而存储和检索来自关系数据库的对象模型,一些不匹配的发生是由于以下原因:

  • 粒度:对象模型比关系模型更精细。

  • 亚型:亚型(指继承)所有类型的关系数据库不支持。

  • 标识:如对象模型,关系模型并没有同时编写暴露身份。

  • 关联:关系模型无法确定多重关系,同时寻找到一个对象域模型。

  • 数据导航:在一个对象网络对象之间的数据导航是在这两种模式中有所不同。


JPA是什么?

Java持久性API(简称JAP)是类和方法的集合,以海量数据关系映射持久并存储到数据库,这是由Oracle公司提供方案技术。

JPA(Java持久性API)是存储业务实体关联的实体的来源。它显示了如何定义一个面向普通Java对象(POJO)作为一个实体,以及如何与管理关系实体。

Java持久性API(JPA)是Java的一个规范。 它用于在Java对象和关系数据库之间保存数据。 JPA充当面向对象的领域模型和关系数据库系统之间的桥梁。

由于JPA只是一个规范,它本身不执行任何操作。 它需要一个实现。 因此,像Hibernate,TopLink和iBatis这样的ORM工具实现了JPA数据持久性规范。


在哪里使用JPA?

为了减少编写代码,对象关系管理的负担,程序员遵循“JPA提供者”框架,它可以方便地与数据库实例的交互。这里所需要的框架接管JPA。


JPA 历史

早期版本的EJB,定义持久层结合使用 javax.ejb.EntityBean 接口作为业务逻辑层。

  • 同时引入EJB3.0的持久层分离,并指定为JPA1.0(Java持久性API)。这个API规范随着JAVA EE5对2006年5月11日使用JSR220规范发布。

  • JPA2.0的JAVA EE 6规范发布于2009年12月10日并成Java Community Process JSR317 的一部分。

  • JPA2.1使用JSR338 的 JAVA EE7的规范发布于2013年4月22日。

JPA版本

作为EJB 3.0规范的一部分,Java持久API的第一个版本JPA 1.0于2006年发布。

以下是在JPA规范下发布的其他开发版本: -

  • JPA 2.0 - 此版本于2009年下半年发布。以下是此版本的重要功能: -

    • 它支持验证。

    • 它扩展了对象关系映射的功能。

    • 它共享缓存支持的对象。

  • JPA 2.1 - JPA 2.1于2013年发布,具有以下特性: -

    • 它允许提取对象。

    • 它为条件更新/删除提供支持。

    • 它生成模式。

  • JPA 2.2 - JPA 2.2在2017年作为维护开发而发布。它的一些重要特性是: -

    • 它支持Java 8的日期和时间。

    • 它提供了@Repeatable注释,当想要将相同的注释应用到声明或类型用法时可以使用它。

    • 它允许JPA注释在元注释中使用。

    • 它提供了流式查询结果的功能。


JPA提供者

JPA是一个开源的API,因此各企业厂商如Oracle,Redhat,Eclipse等,通过增加 JPA 持续性,在提供JPA的新产品。这些产品包括:

Hibernate, Eclipselink, Toplink, Spring Data JPA, etc.


类级别架构

下图显示了JPA的类的层次结构。它显示核心类和JPA接口。

JPA Class Level Architecture

下表描述了每个在上述架构的显示单元。

单元 描述
EntityManagerFactory 这是一个EntityManager的工厂类。它创建并管理多个EntityManager实例。
EntityManager 这是一个接口,它管理的持久化操作的对象。它的工作原理类似工厂的查询实例。
Entity 实体是持久性对象是存储在数据库中的记录。
EntityTransaction 它与EntityManager是一对一的关系。对于每一个EntityManager,操作是由EntityTransaction类维护。
Persistence 这个类包含静态方法来获取EntityManagerFactory实例。
Query 该接口由每个JPA供应商,能够获得符合标准的关系对象。

上述的类和接口用于存储实体到数据库的一个记录。帮助程序员通过减少自己编写代码将数据存储到数据库中,使他们能够专注于更重要的业务活动代码,如 数据库表映射的类编写代码。

JPA类关系

在上述体系结构中,类和接口之间的关系属于javax.persistence包。下图显示了它们之间的关系。
 

JPA Class Relationships

  • EntityManagerFactory和EntityManager的关系是1对多。这是一个工厂类EntityManager实例。

  • EntityManager和EntityTransaction之间的关系是1对1。对于每个EntityManager操作,只有一个EntityTransaction实例。

  • EntityManager和Query之间的关系是1对多。查询数众多可以使用一个EntityManager实例执行。

  • EntityManager实体之间的关系是1对多。一个EntityManager实例可以管理多个实体。


JPA教程

相关教程

更多

传智播客JPA详解视频教程

                    本套视频教程是黎活明老师在课堂上给传智播客学员专门讲解的JPA课程,由于传智播客学员在学习JPA课程前,都已经有了Hibernate基础,所以黎活明老师对ORM方面的一些基础概念的讲解都是建立在学员们已经学过了Hibernate的基础上展开的,完全没有Hibernate基础的读者学习本视频教程可能会有对有些内容不能完全透彻理解,所以我们建议读者在学习本视频教程之前,最好是先学习下传智播客发布的Hibernate视频教程
                

JPA环境配置

                    
                

JPA ORM框架介绍

                    
                

JPA高级映射(继承)

                    
                

jpa与hibernate注解混合使用

                    请问jpa的注解与hibernate的注解能混合使用吗?二者是什么关系?我的意思是我用的是jpa,但是发现里面没有@LazyCollection这个注解。只有hibernate才有。我想混合使用,谢谢
                

Spring +JPA 多持久化单元 怎么配置

                    Spring +JPA 多持久化单元 怎么配置
                

JPA 增删改查入门示例

                    
                

spring 3.0 和jpa 整合 用jboss

                    1、网上说了很多例子,这就不说了,只介绍下我遇见的问题 java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider 这是启动jboss5的时候报错,问题出在jboss5 client中 javax.pe
                

JPA JPQL 工作原理与持久性

                    
                

【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3

                    JPA全称为Java持久性API(Java Persistence API),JPA是Java EE 5标准之一,是一个ORM规范,由厂商来实现该规范,目前有Hibernate、OpenJPA、TopLink、EclipseJPA等实现。