31百科知识网

31百科知识网

myBatis的优缺点(mybatis有什么功能)

投稿 -
MyBatis

大家好,myBatis的优缺点相信很多的网友都不是很明白,包括mybatis不建议建立关系也是一样,不过没有关系,接下来就来为大家分享关于myBatis的优缺点和mybatis不建议建立关系的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

  1. Hibernate和MyBatis的区别
  2. Java开发中,MyBatis、Hibernate、Spring Data JPA应该如何选择
  3. 为什么国内流行mybatis,国外反而多用hibernate
  4. myBatis的优缺点

Hibernate和MyBatis的区别

mybatis与hibernate一样是个orm数据库框架。它与hibernate区别是非常大的,有以下几点:

总结起来:

mybatis:小巧、方便、高效、简单、直接、半自动

hibernate:强大、方便、高效、复杂、绕弯子、全自动

1.hibernate是全自动,而mybatis是半自动。

hibernate完全可以自动生成sql。而mybatis仅有基本的字段映射,仍然需要通过手写sql来实现和管理。

2.hibernate数据库移植性远大于mybatis。

hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,移植性也会随之降低很多,成本很高。

3.hibernate拥有完整的日志系统,mybatis则欠缺一些。

hibernate日志系统非常健全,涉及广泛,而mybatis则除了基本记录功能外,功能薄弱很多。

4.mybatis相比hibernate需要关心很多细节

hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。

5.sql直接优化上,mybatis要比hibernate方便很多

由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;总之写sql的灵活度上hibernate不及mybatis。

mybatis:

1.入门简单,即学即用,提供了数据库查询的自动对象绑定功能。

2.可以进行更为细致的SQL优化,可以减少查询字段。

3.缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

4.二级缓存机制不佳。

hibernate:

1.功能强大,数据库无关性好,O/R映射能力强。

2.有更好的二级缓存机制,可以使用第三方缓存。

3.缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

举个形象的比喻:

mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作

hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。

Java开发中,MyBatis、Hibernate、Spring Data JPA应该如何选择

选择哪一种框架,需要结合项目实际来,结合业务场景和团队成员的能力,综合考虑并选择技术方案。

先和大家讲讲每一种框架是啥

Hibernate:POJO与数据库表建立映射关系;Java程序员可以使用操作对象的思维操作数据库。(POJO就是JavaBean,只有有属性、set、get方法)

Mybatis:做的是POJO与SQL之间的映射关系;程序员需要编写SQL;

SpringDataJPA:有人说它是对Hibernate更高级的封装,这种说法是有一些问题的;第二部分详细说明一下。

要解释清楚SpringDataJPA是什么,需要一步步说起

期初Java需要通过各个数据库厂商提供的API进行数据库的访问,后来JAVA提出了JDBC,程序直接使用JDBC这套规范就可以跟各个数据库进行对接;

接着诞生了ORM技术,简化了Java对象的持久化工作,出现了Hibernate、TopLink等ORM框架;

Sun公司在JDK1.5的时候,吸收了Hibernate、TopLink等ORM框架的优点,提出了Java持久化规范:JPA;

Hibernate在3.2的时候提供了JPA的实现,其余的JPA的供应商还有诸如OpenJPA、Toplink等;

Spring在做持久化这一块的工作,开发了Spring-data-xxx这一系列包,如:Spring-data-jpa,Spring-data-redis,Spring-data-mongodb等等,这些都是Spring提供的基于JPA和其他一些NOSQL的Repository。

SpringdataJPA是在JPA规范的基础下提供了Repository层的实现,但是使用哪一款ORM需要你自己去决定;相比我们更为熟悉的Hibernate和MyBatis,SpringDataJPA可以看做更高层次的抽象。

使用SpringdataJPA,默认底层是Hibernate,但是可以修改成其他的ORM框架。

几种框架的优劣

Hibernate开发难度较大,学习周期长;但是可以让开发者无需关心SQL,更专注业务流程;HQL不关心数据库的类型,所以迁移起来很方便;

Mybatis需要手动编写SQL语句(更直观),可更直接地对SQL进行优化,但是数据库移植性差;

SpringDataJPA简化了数据库访问,可以通过命名规范编写SQL,如果SQL较为复杂,还是需要通过注解的方式编写SQL;它更适用于现在微服务的架构(微服务的极致都是单表操作)。

从个人的角度:MyBatis>SpringDataJPA>Hibernate,或者MyBatis+SpringDataJPA。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

为什么国内流行mybatis,国外反而多用hibernate

1.国内基本都学过SQL,而且写SQL很方便。

2.国内大多数是“面向数据库编程”

3.JPA的表连接太难懂,国内对于ORM的思想还是停留在JDBC

4.Mybatis更易于维护,面对不稳定的国内环境更适合

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

myBatis的优缺点的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mybatis不建议建立关系、myBatis的优缺点的信息别忘了在本站进行查找哦。

不眠不休,两个月整理出这本 面试手册,让我成为了offer 收集大师

标签:# 优缺点# 我的# 网站# myBatis