mybatis和hibernate的区别的简单的说的一下

个人的理解的,有不足的请多多包涵的,请多多的指教。

两者的区别的分析,如下!


1.hibernate的框架比较笨重,mybatis的框架的是一个新兴的框架,相比较hibernate较轻些。

 hibernate是一个完全的orm的框架, 而mybatis的是一个半orm 框架

2.hibernate的核心的

mybatis和hibernate的区别的简单的说的一下

从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。

1、Configuration接口:负责配置并启动Hibernate

2、SessionFactory接口:负责初始化Hibernate

3、Session接口:负责持久化对象的CRUD操作

4、Transaction接口:负责事务

5、Query接口和Criteria接口:负责执行各种数据库查询

 

注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。




mybatis的核心:

mybatis和hibernate的区别的简单的说的一下

原理详解:

        MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。


3.hibernate的优缺点;

优点:

1、更加对象化

      以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。

2、移植性
      因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。

3、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。

      对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。

4、Hibernate代码测试方便。

5、提高效率,提高生产力。

 

缺点:

1、使用数据库特性的语句,将很难调优

2、对大批量数据更新存在问题

3、系统中存在大量的攻击查询功能


mybaits 的优缺点:

MyBatis的优缺点

  优点:

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、二级缓存机制不佳


总结:

①hibernate对数据库的依赖性不高, hibernate只关心表与表的之间的关系,mybatis对数据库的依赖性高,它关注的是参数的映射和结果集的映射

② hibernate一般用于传统项目的,对数据量的大的一 般使hibernate,维护比mybatis的好维护。

    mybatis一般用于新兴的互联网项目的,数据量小的,开发快,学习成本低。


③ mybatis可以对sql语句的更加细致的分析,而hibernate的不行,优化也没有什么太大的效果。