如何一文了解JPA概述-SpringData

1、JPA概述

1.1、JDBC的多样实现类

Sun希望整合ORM技术,实现天下归一。
在这里插入图片描述

1.2、JPA是什么

  • Java Persistence API:用于对象持久化的API
  • Java EE 5.0平台标准的ORM规范,使得应用程序以统一的方式访问持久层
  • JPA是JSR-220(EJB3.0)规范的一部分,在JSR-220中规定实体对象(EntityBean)由JPA进行支持。所以JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立运行,开发和测试更加方便。

可以面向JPA规范编程来持久化对象
在这里插入图片描述

1.3、JPA和Hibernate的关系

  • JPA是hibernate的一个抽象(就像JDBC和JDBC驱动的关系):
    • JPA是规范:JPA本质上就是一种ORM规范,不是ORM框架—因为JPA并未提供ORM实现,它只是订制了一些规范,提供了一些编程的API接口,但具体实现则由ORM厂商提供实现
    • Hibernate是实现:Hibernate除了作为ORM框架之外,他也是一种JPA实现
  • 从功能上来说,JPA是Hibernate功能的一个子集

那么Hibernate是如何实现与JPA的这种关系的呢。Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
1、hibernate-annotation:是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation。
2、hibernate-core:是Hibernate的核心实现,提供了Hibernate所有的核心功能。
3、hibernate-entitymanager:实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。

1.4、JPA 的供应商

  • JPA 的目标之一是制定一个可以由很多供应商实现的 API,目前Hibernate、TopLink 以及 OpenJPA 都提供了 JPA 的实现
  • Hibernate
    • JPA 的始作俑者就是 Hibernate 的作者
    • Hibernate 从 3.2 开始兼容 JPA
  • OpenJPA
    • OpenJPA 是 Apache 组织提供的开源项目
  • TopLink
    • TopLink 以前需要收费,如今开源了

2、JPA的优势

1、标准化: 提供相同的 API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。
2、 简单易用,集成方便: JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下创建实体和创建 Java 类一样简单,只需要使用 javax.persistence.Entity 进行注释;JPA 的框架和接口也都非常简单,
3、 可媲美JDBC的查询能力: JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
4、支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型

3、JPA 包括 3方面的技术

JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致,总的来说,JPA包括以下3方面的技术:
1、 ORM 映射元数据:JPA 支持 XML 和 JDK 5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
2、 JPA 的 API:用来操作实体对象,执行CRUD操作,框架在后台完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。
3、 查询语言(JPQL):这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序和具体的 SQL 紧密耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值