木木的Java知识整理——JDBC与MyBatis的区别

看了几篇大佬的相关整理,可以总结成如下几部分。

JDBC与MyBatis的区别

  • 一、各自定义
    • 1.1 JDBC
    • 1.2 MyBatis
  • 二、JDBC与MyBatis的区别

一、各自定义

1.1 JDBC

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

JDBC是Java提供的一个操作数据库的API

我们平时使用jdbc进行编程,大致需要下面几个步骤
1,使用jdbc编程需要连接数据库,注册驱动和数据库信息;
2,操作Connection,打开Statement对象;
3,通过Statement对象执行SQL,返回结果到ResultSet对象;
4,使用ResultSet读取数据,然后通过代码转化为具体的POJO(Plain Old Java Objects,普通的Java对象)对象;
5,关闭数据库相关的资源。

jdbc的缺点
1.工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象和ResultSet对象去拿数据并关闭他们;
2.我们对jdbc编程可能产生的异常进行捕捉处理并正确关闭资源。

1.2 MyBatis

MyBatis是一个持久层ORM框架,底层是在JDBC的基础上进行了扩展和封装。

持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射)。也就是哪个类对应哪个表,哪个属性对应哪个列。持久层的目的就是,完成对象数据和关系数据的转换。
将内存中的数据保存到数据库中,以防止重启后数据丢失。

Mybatis需要提供的映射文件包含了一下三个部分:sql,映射规则,pojo(Plain Old Java Objects,普通的Java对象)。在Mybatis里面你需要自己编写sql,可以配置动态sql,同时也可以对sql进行优化,通过配置决定你的sql映射规则,也能支持存储过程,所以对于一些复杂和需要优化性能的sql查询它就更加方便。
Mybatis几乎可以做到jdbc所有能做到的事情。

二、JDBC与MyBatis的区别

JDBC,MyBatis的区别
1)从层次上看,JDBC是较底层的持久层操作方式,而MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。
2)从功能上看,JDBC就是简单的建立数据库连接,然后创建statement,将sql语句传给statement去执行,如果是有返回结果的查询语句,会将查询结果放到ResultSet对象中,通过对ResultSet对象的遍历操作来获取数据;MyBatis是将sql语句中的输入参数和输出参数映射为java对象,sql修改和优化比较方便。
3)从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要灵活使用sql语句的话建议采用MyBatis框架。

MyBatis相比JDBC的优势
(1) mybatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
(2) mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。
(3) mybatis 提供了一级和二级缓存(需要配置打开),提高了程序性能。
(4) mybatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
(5) mybatis可使用配置文件管理sql语句:使用JDBC对数据库进行操作时,SQL查询语句分布在各个Java类中,这样可读性差,不利于维护,当我们修改Java类中的SQL语句时要重新进行编译;Mybatis可以把SQL语句放在配置文件中统一进行管理,以后修改配置文件就行,也不需要重新编译部署。
(5) mybatis对数据库操作结果进行自动映射:在使用JDBC进行查询时,返回一个结果集ResultSet,我们要从结果集中取出结果封装为需要的类型;在Mybatis中可以设置将结果直接映射为自己需要的类型,比如:JavaBean对象、一个Map、一个List等等。
(6)一致的编码风格大大减少了代码的沟通交流成本。

参考资料:
1、Mybatis和JDBC区别
2、jdbc,mybatis,hibernate各自优缺点及区别
3、Mybatis和JDBC区别

你可能感兴趣的:(Java知识整理)