MyBatis与Hibernate的区别

MyBatis与Hibernate的区别


Hibernate是一种全表映射模型。通过xml或者注解提供的规则,将POJO映射到数据库表上,可以通过POJO直接操作数据库的数据。Hibernate对JDBC的封装程度很高,并使用HQL语言提高可移植性。

Hibernate的优点在于,配置了映射文件和数据库连接文件后,Hibernate可以通过操作session来操作数据库,消除了JDBC的大量代码,提高了程序的可读性。此外还提供级联、缓存、映射等功能。Hibernate的全表映射使得程序员可以通过HQL操作POJO进而操作数据库,方便了开发,更加面向对象:

1)      消除了代码的映射规则,在xml和注解里配置。

2)      无需再管理数据库连接,在xml里面配置。

3)      一个会话不用操作多个对象,只要操作Session对象即可。

4)      关闭资源只需关闭一个session即可。

Hibernate的缺点:当今大型互联网中,对代码灵活性,SQL性能的要求越来越高。Hibernate提供的全表映射的缺点显露。

1)      使用insert和update的时候,虽然只操作单个记录,Hibernate仍会锁住整张表,这在高并发的场景下会显著的降低性能。(Mybatis支持乐观锁)

2)      全表映射对带宽的浪费太大。

3)      不能根据不同的条件组装不同的SQL,灵活性不好。

4)      对于多表关联和复杂SQL查询的支持交叉,需要自己写SQL,返回后需要自己将数据组装成POJO。

5)      不支持存储过程(是一组预编译的SQL语句)。

6)      不支持SQL优化。

 

MyBatis可以使用简单的xml或注解用于配置和原始映射,将接口和Java的POJO(plain old java objects,普通的Java对象)映射成数据库中的记录。MyBatis不屏蔽SQL,用户通过自己编写SQL来手动匹配POJO的映射关系,有利于对SQL进行优化和改造。MyBatis提供动态SQL功能,允许用户根据不同的条件组将SQL,提高了代码的可读性和可维护性。提供了Mapper接口,提高了开发效率和灵活性,使得开发者更专注于业务逻辑而非映射规则的API。

MyBatis的优点:高度灵活,可以动态生成映射关系,可优化,易维护。它几乎可以替代JDBC,拥有动态列、动态表名、支持存储过程,同时也提供缓存、日志、级联。

MyBatis的缺点就是需要开发者自己提供映射规则和书写SQL,开发的工作量较Hibernate更大。编程SQL较HQL语言的平台移植性不够好。

 

【总结】

Hibernate和MyBatis的增删改查没太大区别。对于映射层,Mybatis需要接口和SQL,Hibernate不需要。

Hibernate是全表映射模式,代码量小,开发速度快。同时提供了日志、缓存、级联,使用HQL对POJO进行操作。缺点由于屏蔽SQL导致的不灵活、不支持存储过程、不能优化SQL而导致的性能差。

MyBatis是自由书写SQL,支持动态SQL、支持存储过程,满足性能优化的需要。但是由于需要手工编码Sql,开发工作量稍大。

Hibernate适用于性能要求不太大的系统,比如企业的管理系统等。MyBatsi更适合性能要求高,响应快,灵活性要求要的系统。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值