mybatis和hibernate的区别的简单的说的一下
个人的理解的,有不足的请多多包涵的,请多多的指教。
两者的区别的分析,如下!
Hibernate 的框架显得有些笨拙,在使用时可能会感到不够灵活。相比之下,M Yao 的框架则是一个新近流行起来的新技术栈,在很多领域都取得了不错的效果。相比于 Hibernate 来说则较为轻灵,在性能和易用性上都有较大的优势。
hibernate是一个完全的orm的框架, 而mybatis的是一个半orm 框架
2.hibernate的核心的

通过查看图形界面中的 Hibernate 核心组件布局图示,默认情况下我们就能清晰地看到该框架的主要组成部分及其相互之间的关联关系。这个布局图包含了所有与 Hibernate 相关的核心组件信息。现在让我们一步步来了解这些核心接口及其功能。
1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询
请注意:Configuration实例是为启动阶段而存在的对象,在SessionFactory创建完成之后会被丢弃。
mybatis的核心:

原理详解:
该程序通过XML配置文件初始化一个数据库 session工厂(SqFactory),该 session工厂基于获取的配置信息其来源包括两部分:一是从配置文件中读取信息;二是从Java代码中的注解中获取相应的参数设置。此 session工厂能够返回一个 SqlSession 对象(SqSession)。此 SqlSession 对象集成了所有必要的方法集合以执行SQL指令。通过实例化该对象可以方便地执行与业务逻辑相关的 SQL 指令。完成这些操作后及时关闭该对象有助于保护数据库资源并避免潜在的问题。
3.hibernate的优缺点;
优点:
1、更加对象化
从对象化思维的角度管理数据库时,在操作层面只需关注具体数据项本身。
由于Hibernate实现了持久层的封装机制,使得开发者无需关心具体数据库细节即可编写所有代码,并且这些代码都具备高度的可重用性。
- Hibernate is a non-intrusive container technology, which is referred to as lightweight frameworks.
比较Struts中的Action类与ActionForm类中都必须继承相关的功能,并与该框架紧密相关无法独立存在;而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对数据库的影响较为有限,在关联管理上更为注重表与表之间的关联关系;而mybatis则表现出较强的数据库依赖能力,在数据转换处理上更加关注参数映射以及返回数据与业务对象的一一对应关系。
Hibernate通常被应用于传统项目中;而当数据量较大时,则倾向于使用Hibernate以实现良好的维护效果;相比之下MySQL的Mybatis在维护方面同样表现出色。
mybatis一般用于新兴的互联网项目的,数据量小的,开发快,学习成本低。
mybatis不仅能够对sql语句进行更为详细的研究与评估,在这方面的能力也远超hibernate;相比之下,hibernate在这方面表现得并不突出,其优化功能也未能充分发挥出应有的潜力
