一、概念
JDBC
,(Java Database Connectivity
,Java
数据库连接)是Java
语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC
也是Sun Microsystems
的商标。我们通常说的JDBC
是面向关系型数据库的。
JPA
是Java Persistence API
的简称,中文名Java
持久层API
,是JDK 5.0
注解或XML
描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun
引入新的JPA ORM
规范出于两个原因:其一,简化现有Java EE
和Java SE
应用开发工作;其二,Sun
希望整合ORM
技术,实现天下归一。
Spring Data JPA
对JPA
规范的再次增强抽象,底层还是用的实现JPA
的Hibernate
技术。
Hibernate
是一个开放源代码的对象关系映射框架,它对JDBC
进行了非常轻量级的对象封装,它将POJO
与数据库表建立映射关系,是一个全自动的ORM
框架,Hibernate
可以自动生成SQL
语句,自动执行,使得Java
程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate
可以应用在任何使用JDBC
的场合,既可以在Java
的客户端程序使用,也可以在Servlet/JSP
的Web
应用中使用,最具革命意义的是,Hibernate
可以在应用EJB
的JaveEE
架构中取代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 方式。