Mybatis与Hibernate的简单对比

简介: Hibernate的DAO层开发简单。

hibernate:全自动全映射ORM(Object Relation Mapping)框架,旨在消除sql,HQL(如下图所示)


20170827170757066.png


优点:


1、Hibernate的DAO层开发简单。

2、Hibernate对对象的维护和缓存比较好,对增删改查的对象的维护要方便。

3、Hibernate数据库移植性很好。

4、Hibernate有更好的二级缓存机制,可以使用第三方缓存。


缺点:


1、门槛较高。

2、sql失去了相关的灵活性,解决复杂的增删改查比较困难。


Mybatis:半自动化轻量级框架(如下图所示)


20170827170811656.png


优点:


1、简单易学

  mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

2、灵活

  mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

3、解除sql与程序代码的耦合

      通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

4、提供映射标签,支持对象与数据库的orm字段关系映射

5、提供对象关系映射标签,支持对象关系组建维护

6、提供xml标签,支持编写动态sql。


缺点:


1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

4、二级缓存机制不佳


总结:


 根据以上的内容结合相关的应用场景来选择要使用什么样的底层框架。

相关文章
|
6月前
|
SQL Java 数据库连接
hibernate和mybatis的区别
hibernate和mybatis的区别
|
SQL XML Java
mybatis基本构成&mybatis与hibernate的区别&添加mybatis支持
mybatis基本构成&mybatis与hibernate的区别&添加mybatis支持
|
3月前
|
SQL Java 数据库连接
MyBatis 和 Hibernate 有什么区别?
【8月更文挑战第21天】
53 0
|
4月前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
68 0
|
6月前
|
SQL Java 数据库连接
MyBatis与Hibernate区别
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
|
6月前
|
SQL 存储 Java
MyBatis与Hibernate有什么区别?
MyBatis与Hibernate有什么区别?
42 1
|
11月前
|
SQL 缓存 Java
聊聊Hibernate和Mybatis的区别
聊聊Hibernate和Mybatis的区别
52 0
|
SQL Java 数据库连接
Java 最常见的面试题:mybatis 和 hibernate 的区别有哪些?
Java 最常见的面试题:mybatis 和 hibernate 的区别有哪些?
147 0
|
SQL 缓存 Java
Mybatis和hibernate到底有什么异同?
本文在这里给大家科普一下 MyBatis 和 Hibernate,看它们有哪些异同。
100 0
|
SQL 存储 IDE
MyBatis的相关配置、MyBatis与hibernate的区别
1.1 mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 mybatis是一个基于Java的持久层框架(半自动),主要包括SQL Maps和Data Access Objects(DAO) ORM:Object Relational Mapping (对象与关系型数据库之间的映射管理框架) 1.2 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的