面试六
- Mybatis和Jdbc联系和区别
联系
基于 JDBC:MyBatis 的底层是基于 JDBC 实现的。它使用 JDBC 来处理数据库的连接、执行 SQL 语句以及处理结果集等操作。
SQL 控制:无论是 MyBatis 还是 JDBC,开发者都需要编写 SQL 语句来实现数据的增删改查等操作。这一点上,它们都给开发者提供了对 SQL 的直接控制能力。
区别
抽象层级:
JDBC 是 Java 访问数据库的基础,提供了与数据库交互的基本 API。使用 JDBC 时,开发者需要编写较多的样板代码,如加载驱动、建立连接、编写 SQL、处理结果集等。
MyBatis 在 JDBC 之上提供了一个更高层次的抽象,它通过配置文件或注解的方式将 SQL 语句与 Java 对象映射起来,减少了大量的样板代码,使得数据库操作更加简洁。
开发效率:
使用 JDBC 直接操作时,每次都需要手动编写处理连接、执行 SQL 以及结果集映射等过程,开发效率相对较低。
MyBatis 通过映射文件或注解将 SQL 语句与 Java 对象进行映射,大大简化了数据库操作,提高了开发效率。
易用性与灵活性:
JDBC 提供了数据库操作的最大灵活性,但这也意味着使用者需要自行处理很多细节。
MyBatis 提供了易用性更强的 API,并通过 XML 或注解配置 SQL,使得开发者可以更专注于 SQL 本身,而不是繁琐的 JDBC 代码。不过,MyBatis 仍保留了对 SQL 的完全控制能力,确保了灵活性。
结果集处理:
在使用 JDBC 时,开发者需要手动从 ResultSet 中提取数据并转换成对象。
MyBatis 则提供了结果映射机制,自动将 SQL 查询的结果集映射到 Java 对象或对象集合中,简化了数据转换工作。
事务管理:
在 JDBC 中,事务管理是通过手动控制连接对象的 commit 和 rollback 来实现的。
MyBatis 也支持灵活的事务管理,但通常与 Spring 等容器结合使用时,可以更方便地进行声明式事务管理
Mybatis与Hibernate区别?
- Hibernate
(1) 优点:对于简单的CRUD可以不写SQL语句,代码可移植(可以更换不同的数据库);
(2) 缺点:
① Hibernate不够灵活,对于复杂的SQL支持较弱;
② HQL黑箱操作,调优复杂度高;
③ 不适合大型互联网项目的高性能要求; - Mybatis
(1) 优点:高度灵活,自己操作SQL,方便优化。学习门槛低,易于维护和开发;
(2) 缺点:由于每种数据库的SQL语句是不一样的,所以代码不可移植;

浙公网安备 33010602011771号