java
持久层框架访问数据库一般有两种方式:
- 以
SQL
为核心,封装JDBC
操作,如:MyBatis
- 以
java
实体类为核心,将实体类和数据库表之间映射的ORM
框架,比如:Spring Data JPA
和Hibernate
接下来就是详细的介绍一些这些概念
JDBC
JDBC
的概念如下:
JDBC(java database connectivity)
-java
数据库连接,是Java
语言中用来规范客户端程序如何来访问数据库的应用程序接口(API
),提供了诸如查询和更新数据库中数据的方法
其实JDBC
就是一套接口规范,这套规范定义了客户端访问数据库的API
,然后再由具体的数据库厂商实现这套接口规范形成具体的数据库驱动器,这样用户就可以使用这套JDBC
规范和数据库驱动来访问数据库了,并且针对不同的数据库厂商只需要更换驱动器就好了
ORM
面向对象的编程语言中常用的持久性存储都是基于实体间关系的关系型数据库;所以之前就有人提出用对象来表达这种实体间的关系,这样的话就可以用面向对象的编程方式来操作关系型数据库了
ORM (Object Relational Mapping)
对象-关系映射,就是对象与关系数据库之间的映射,将面向对象中的类与表映射,将对象实例与表中的记录映射,将对象属性与字段进行映射
ORM
通过对象实现对数据库操作的封装,简化了用户操作数据库的流程,用户只需要使用面向对象的语法就可以实现对数据库的操作
Orm
的优缺点
优点:
- 简化业务代码,使得代码易于理解
- 统一了模型定义,更加易于维护和更新
- 避免用户写出一些性能不佳的
SQL
语句
缺点:
ORM
有很多的API
和设置需要学习- 对于复杂的查询,
ORM
可以无法表达,即便可以表达,性能也不如原生的SQL
JPA
JPA
概念如下:
JPA
是Java Persistence API
的简称,中文名Java持久层API
,是JDK 5.0
注解或XML
描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中
其实,JPA
本质上是一种orm
规范,定义了java
持久化数据的接口,它并不是一种具体的框架;Hibernate
就是一种对JPA
的一种具体的实现
Spring Data JPA
Spring Data JPA
是Spring Data
系列中的一个持久层框架,Spring Data JPA
是基于JPA
规范的更高层次的一种抽象
为什么有了JPA
还要再抽象出一层Spring Data JPA
呢?这是因为不同的ORM
框架之间切换需要编写不同的代码,而使用Spring Data JPA
能够方便的在不同的ORM
框架之间进行切换而不需要更改代码
Spring Data JPA
旨在通过将统一ORM
框架的访问持久层的操作,来提高开发人的效率;在使用Spring Data JPA
的时候还是需要引入具体的ORM
框架,比如:Hibernate,openJPA
等