JavaSEJava 杂谈

Mybatis概述

2018-05-08  本文已影响67人  熊猫读书营

众所周知,Mybatis是一种ORM框架,所以要学习Mybatis,首先要了解一下什么是ORM模型?

ORM模型简介

ORM(Object Relation Mapping):对象关系映射。
Object指的就是实体类对象,
Relation指的是数据库中的表,
Mapping指的是实体类对象与表之间的对应关系。

三者之间的关系可以用下图来表示:

从上图中可以看到,实体类对象可以通过映射关系持久化的保存到数据库中,同时数据库中的数据也可以通过映射关系读取到Java内存中,并封装到对象中进行数据的处理。

ORM模型本来是通过传统的JDBC程序来实现的,但是那样会存在很多缺陷,比如:
1)大量的配置信息硬编码。如需要将数据库的账号密码等信息编写到代码中,这样会大大降低开发的灵活性。
2)大量的无关业务处理的编码。如要写很多的数据库连接、关闭、sql语句等代码。
3)扩展优化极为不便。

Mybatis的出现

由于传统的ORM模型存在诸多的缺陷,因此出现了Mybatis、Hibernate等ORM框架。

MyBatis就是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。

Mybatis有如下优点:
1)避免了传统JDBC的硬编码。Mybatis是将数据库的信息配置到了XML文件当中。
2)支持XML配置及注解。Mybatis封装了底层的ORM操作,从而让开发人员可以将更多的精力放在业务的编码上。
3)POJO对象和数据库记录直接映射。Mybatis中,Java的实体类对象与数据库之间是直接映射的,从而避免了开发人员为了实现映射而进行的大量编码工作。
3)完善的文档支持。Mybatis有很好的文档与社区支持。

Mybatis的使用场景

1)更加关注SQL优化的项目。
比如开发环境与生产环境出现大量数据差异的项目,开发环境中的数据量与生产环境中的数据量不是成一定比例的,这时在开发环境中开发完项目后,在生产环境部署的过程中,要根据实际的数据量进行SQL语句的优化,也就意味着要对SQL语句进行修改,而这一点对于传统的JDBC程序来说是很难做到的,这也是Mybatis独有的特点。

2)需求频繁更新改动的项目
由于Mybatis极大程度地隐藏了底层ORM的实现,因此可以让开发人员更加注重业务的实现。

Mybatis与Hibernate的区别

Mybatis实际上不完全是一个ORM框架,因为MyBatis需要开发人员手动编写sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

由于Mybatis需要要直接编写原生态sql,因此可以严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是Mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量会很大。

而Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

从下图可以简单地看出两者之前的区别:

微信公众号【编程资源网】
本公众号致力于免费分享全网最优秀的视频资源,学习资料,面试经验等,前端,PHP,JAVA,算法,Python,大数据等等,你想要的这都有,还会分享优质博文,提高你的认知与思维

编程资源网-QQ交流群:625494093
要进微信交流群的话加微信:lovebugs88
微信搜索公众号:编程资源网 或者扫描下方二维码直接关注,

原创文章,转载请注明出处

上一篇下一篇

猜你喜欢

热点阅读