MyBatis知识盘点【壹】_MyBatis和Hibernate
来源:互联网 发布:unity3d 虚拟拆装 编辑:程序博客网 时间:2024/05/16 16:23
这个系列文章会说一下目前比较流行的持久层开源框架MyBatis,不过不会讲到其源码实现,因为我还没有看过...后面更多的是讲下配置和使用。对源码有情节的同学推荐下徐郡明老师的这本《MyBatis技术内幕》,我近期也打算阅读,等读罢会在另一个系列文章里分享心得。
回到正文,在SSH时代我们持久层框架更多的使用的是Hibernate。Hibernate是建立在若干pojo通过xml映射文件提供的规则映射到数据库表上的,是全表映射。pojo对象可以通过工具自动生成,通过sql或hql和数据库进行交互,同时支持对数据的一级缓存和二级缓存。Hibernate的基本交互方式如下图所示:
Hibernate的优点和缺点也是非常明显的。
优点有:
1.消除了代码的映射规则,全部被分离到了xml或者注解里去配置;
2.无需再管理数据库连接,也配置到xml里;
3.一个会话中,不要操作多个对象,只操作session对象即可;
4.关闭资源值需要关闭一个session即可;
缺点
1.全表映射带来不便,比如更新时需要发送所有的字段;
2.无法根据不用的条件组装不同的sql;
3.对多表关联和复杂sql查询支持较差,需要自己写sql,返回后需要自己拼装成pojo;
4.不能有效支持存储过程;
5.hql性能较差,无法优化;
面对互联网项目不断变化的业务场景,Hibernate逐渐显得略加笨重。毕竟当我们享受了全自动的功能,也要接受其带来的限制和不灵活。这个时候,“半自动”的iBatis应运而生(后更名为MyBatis)应运而生。MyBatis需要手工配置提供pojo,sql和映射关系,但是几乎可以做到JDBC所能做到的所有事情。MyBatis的基本交互方式如下图所示:
和Hibernate相比,MyBatis的优缺点如下:
优点:
1.动态sql,可配置动态表名列名等;
2.优化sql,可配置sql映射规则;
3.支持存储过程;
4.可以自动映射;
缺点:
缓存、日志、级联功能不如Hibernate强大
下一篇文章:MyBatis知识盘点【贰】_MyBatis组件概览
- MyBatis知识盘点【壹】_MyBatis和Hibernate
- MyBatis知识盘点【贰】_MyBatis组件概览
- MyBatis知识盘点【叁】_mybatis-config.xml配置说明
- mybatis工作总结001_mybatis中_parameter使用和常用sql
- MyBatis知识盘点【肆】_映射器
- MyBatis知识盘点【伍】_动态sql
- 1.mybatis源码剖析_mybatis快速入门
- mybatis入门_mybatis基本原理以及入门程序
- redis知识盘点【壹】_基础知识
- mybatis和hibernate对比
- Hibernate和MyBatis区别
- hibernate和mybatis
- Mybatis和Hibernate区别
- Hibernate和MyBatis区别
- mybatis和hibernate 对比
- Mybatis和hibernate比较
- hibernate和mybatis比较
- mybatis 和 Hibernate对比
- 网络编程的概念和表示地址的类
- 图像转换:RGB24转换为YUV420P
- 深入分析Java方法反射的实现原理
- 位号图中的各电子元件的字母标识
- python3 socket client
- MyBatis知识盘点【壹】_MyBatis和Hibernate
- 几种应用程序调用Oracle存储过程的方法
- 一些比较好的第三方开源
- 定义一个图形类及其子类(三角形类和矩形类),分别计算其面积和周长
- c++ double类型存储
- DAS、SAN和NAS三种存储方式
- 奇怪的SVN报错: Cannot accept non-LF line endings in 'svn:log' property
- 分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?
- TensorFlow高效读取数据的方法