JDBC、JPA、Spring Data JPA、Hibernate、MyBatis的区别

一、概念

JDBC,(Java Database ConnectivityJava数据库连接)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

JPAJava Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EEJava SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。

Spring Data JPAJPA规范的再次增强抽象,底层还是用的实现JPAHibernate技术。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSPWeb应用中使用,最具革命意义的是,Hibernate可以在应用EJBJaveEE架构中取代CMP,完成数据持久化的重任。

MyBatis 是一个持久化框架,但不完全是一个ORM框架,不是依照的JPA规范。

二、什么是 ORM 框架

ORM(Object Relational Mapping)框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
简而言之就是对象关系映射,是对象持久化的核心,是对jdbc的封装。

三、JDBC 与 JPA 的区别

JDBC 也是一种规范和接口,不过 JDBC 是面向 SQL 的,使用起来比较繁琐。所以就有了 ORM 框架,建立了 Java 对象与数据库表之间的映射关系,可以通过直接操作对象来实现持久化,简化了操作的繁杂度。而 JPA 就是 ORM 框架的规范,值得一提的是 Hibernate 是符合 JPA 规范的,而 MyBatis 却不符合,因为 MyBatis 还是需要写 SQL 的。

JDBC 示意图:

在这里插入图片描述

JPA 示意图:

在这里插入图片描述

四、Spring Data JPA、Hibernate、MyBatis的区别

Spring Data JPA 极大的简化了数据库访问,可以通过命名规范、注解的方式较快的编写SQL。

Hibernate 对数据库提供了较为完整的封装,封装了基本的DAO层操作,有较好的数据库移植性。

Mybatis 可以进行更细致的SQL优化,查询必要的字段,但是需要维护SQL和查询结果集的映射,而且数据库的移植性较差,针对不同的数据库编写不同的SQL。

五、总结

如果是进行底层编程,需要对性能要求高,应采用 JDBC 方式。

如果直接操作数据库表,没有过多的定制,建议使用 Hibernate 方式。

如果要灵活使用 sql 语句,建议采用 MyBatis 方式。

发布了332 篇原创文章 · 获赞 198 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/riemann_/article/details/103721782