总是碰到这些名词,但却不知道准确的含义和解释。于是查了资料梳理了一下。
1、SpringData
SpringData是SpringBoot底层数据访问默认采用的技术。
官方解释:
Spring Data提供了一个进行数据访问的统一的途径,包含对关系型、非关系型、Map-Reduce和其他数据库的访问。
Spring Data包含的主要模块:
其中就有Spring Data JPA
2、Spring Data JPA
它是Spring Data的一个模块,用来进行关系型数据库访问。
3、JPA和Hibernate
我们知道Hibernate是一个ORM框架,而JPA(Java Persistence API,java持久化API)是一种ORM规范。JPA和Hibernate的关系就像JDBC和JDBC驱动的关系,也就是JPA制定了ORM规范,而Hibernate实现了这一个规范。
然而事实上是先有Hibernate再有的JPA,JPA的起草者也是Hibernate的作者。因此从功能上说JPA只是Hibernate的子集,只有部分的Hibernate功能。(这有点像日志门面SLF4j和日志框架log4j的关系)
JPA
JPA ( Java Persistence API )意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR 338,这些接口所在包为 javax.persistence ,详细内容可参考 https://github.com/javaee/jpa-spec ,https://github.com/javaee/jpa-spec)JPA的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。总的来说,JPA包括以下3方面的技术:
- ORM映射元数据: 支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系
- API: 操作实体对象来执行CRUD操作
- 查询语言: 通过面向对象而非面向数据库的查询语言( JPQL )查询数据,避免程序的SQL语句紧密耦合
![](https://i-blog.csdnimg.cn/blog_migrate/0279c79a45328e05388f49664a6588f8.webp?x-image-process=image/format,png)
4、整个体系图
参考:
https://www.jianshu.com/p/c23c82a8fcfc