likes
comments
collection

一次明白 JDBC,ORM,JPA,SpringDataJPA 之间的关系

作者站长头像
站长
· 阅读数 18

之前介绍了java连接数据库的几种方式,连接之后就是操作数据库了;java持久层框架访问数据库一般有两种方式:

  • SQL为核心,封装JDBC操作,如:MyBatis
  • java实体类为核心,将实体类和数据库表之间映射的ORM框架,比如:Spring Data JPAHibernate

接下来就是详细的介绍一些这些概念

JDBC

JDBC的概念如下:

JDBC(java database connectivity)- java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口(API),提供了诸如查询和更新数据库中数据的方法

一次明白 JDBC,ORM,JPA,SpringDataJPA 之间的关系

其实JDBC就是一套接口规范,这套规范定义了客户端访问数据库的API,然后再由具体的数据库厂商实现这套接口规范形成具体的数据库驱动器,这样用户就可以使用这套JDBC规范和数据库驱动来访问数据库了,并且针对不同的数据库厂商只需要更换驱动器就好了

ORM

面向对象的编程语言中常用的持久性存储都是基于实体间关系的关系型数据库;所以之前就有人提出用对象来表达这种实体间的关系,这样的话就可以用面向对象的编程方式来操作关系型数据库了

ORM (Object Relational Mapping)对象-关系映射,就是对象与关系数据库之间的映射,将面向对象中的类与表映射,将对象实例与表中的记录映射,将对象属性与字段进行映射

ORM通过对象实现对数据库操作的封装,简化了用户操作数据库的流程,用户只需要使用面向对象的语法就可以实现对数据库的操作

一次明白 JDBC,ORM,JPA,SpringDataJPA 之间的关系

Orm的优缺点

优点:

  • 简化业务代码,使得代码易于理解
  • 统一了模型定义,更加易于维护和更新
  • 避免用户写出一些性能不佳的SQL语句

缺点:

  • ORM有很多的API和设置需要学习
  • 对于复杂的查询,ORM可以无法表达,即便可以表达,性能也不如原生的SQL
JPA

JPA概念如下:

JPAJava Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中

其实,JPA本质上是一种orm规范,定义了java持久化数据的接口,它并不是一种具体的框架;Hibernate就是一种对JPA的一种具体的实现

Spring Data JPA

Spring Data JPASpring Data系列中的一个持久层框架,Spring Data JPA是基于JPA规范的更高层次的一种抽象

为什么有了JPA还要再抽象出一层Spring Data JPA呢?这是因为不同的ORM框架之间切换需要编写不同的代码,而使用Spring Data JPA能够方便的在不同的ORM框架之间进行切换而不需要更改代码

Spring Data JPA旨在通过将统一ORM框架的访问持久层的操作,来提高开发人的效率;在使用Spring Data JPA的时候还是需要引入具体的ORM框架,比如:Hibernate,openJPA

一次明白 JDBC,ORM,JPA,SpringDataJPA 之间的关系