“什么是世界上最好的编程语言? ”
“Java和C++应该选哪个?”
“应该选JPA还是Mybatis?”
我们在工作中,总是有很多问题,尤其是遇到技术选型的时候,争论会比较多。
很多人都是会什么吹什么,自己用JPA所以吹JPA,尝到MyBatis的甜头就说MyBatis好...
现在很多程序员因为工作需要或者方便面试,会去学习新的技术,但也只限于学习技术的使用,不考虑它好在哪里。剪刀和菜刀哪个好?剪刀也可以切菜,为什么还要用菜刀? 脱离了使用场景,去谈工具之间的优劣,就是耍流氓。 每一种框架都有其优点和不足,在不同的工作场景中,要看哪个框架可以解决你的需求。
假如现在你手头有个项目:
1、如果你用原始JDBC对接数据库,会发现组装对象太痛苦,而且还需要自己建表,累死个人…
2、当你发现了Spring Data JPA ,仿佛打开了新世界的大门,增删改查不用写了,直接继承;数据库表也不用建了,直接自动生成。原来数据库操作代码要写一天,现在一条语句就搞定!只是项目体量激增后,JPA的优化性能比较复杂。
3、这时候你发现了mybatis,宛如一个黑科技!直接映射返回对象,前台所需要的数据库建个DTO类就行,多表关联的数据也可以一个DTO接收所有数据。根据条件组装各种SQL,简直是爽爆了!
所有的编程语言、技术框架等等,对于程序员来说,都只是工具。技术是服务于业务的,没有绝对NB的技术,只有适合当前业务的技术。
MyBatis整体架构
JPA默认使用hibernate作为ORM实现,为什么阿里巴巴的持久层抛弃了hibernate采用了MyBatis框架?主要就是因为MyBatis更适合处理大量数据或者大并发情况。
JPA 是面向对象的思想,一个对象就是一个表,强化的是你对这个表的控制。JPA继承的那么多表约束注解也证明了JPA对这个数据库对象控制很注重;
mybatis 则是面向sql,你的结果完全来源于sql,而对象这个东西只是用来接收sql带来的结果集。你的一切操作都是围绕sql,包括动态根据条件决定sql语句等。mybatis并不那么注重对象的概念,只要能接收到数据就好。
Mybatis的优点是简单高效,优化起来也方便,比较符合现在的开发节奏,现在的互联网公司都是先快速开发占领市场,然后再优化代码。而且这个过程需求经常是变来变去的,开发人员也有流动性,这种情况下用Mybatis显然更加适合。
MyBatis学习路线
而且相比于JPA,MyBatis学习成本低,使用简单,能达到目的,不增加额外工作量(或很少增加),架构来说MyBatis功能单一,场景明确,耦合度低,无状态,便于 (放在业务代码里) 分布式部署。在大多数场景里,MyBatis更适合。
很多工作3、5年的程序员,工作中接触的新技术有限,对于MyBatis的诸多妙用依然一知半解。 为了带大家发现MyBatis的全新世界,我特地邀请了资深架构师、复旦大学硕士Lison老师为大家带来 《MyBatis》 系列直播课, 带你摸清MyBatis的骨架,同时从源码角度深度理解MyBatis, 原价199元,公众号粉丝限时专享0.1元,限量200个名额!
在线直播,有疑问,现场解决!
《MyBatis从青铜到王者之路》
原价199元,本公众号粉丝专享限时 0.1元
Lison老师:
资深架构师,10余年java行业经验。
专精领域: 精通JAVA、J2EE和前端开发,擅长互联网高并发、高可靠架构设计;
课程大纲
4.21
1.摸清MyBatis的骨架
2.日志模块分析
4.22
1.数据源模块分析
2.缓存模块分析
4.23
1.MyBatis的核心运行流程
2.看源码的正确姿势
▲ 附赠 7.8G的Java架构进阶、视频资料
扫码添加肉兰老师报名
“来,一起 发现MyBatis的全新世界 ”