Mybatis与Hibernate区别

hibernate:是一个标准的ORM框架(对象关系映射)。入门门槛较高,不需要写sql,sql语句自动生成,对sql语句进行优化、修改比较困难。

应用场景:适用需求变化不多的中小型项目,比如:后台管理系统,erp,orm,oa等


mybatis:专注sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis也可以实现映射(输入映射,输出映射)

应用场景:适用需求变化较多的项目,比如:互联网项目。


相同点

1)Hibernate与MyBatis都是通过SessionFactoryBuider由XML配置文件生成SessionFactory,由SessionFactory 生成Session,由Session来开启执行事务和SQL(Structured Query Language,结构化查询语言)语句。

(2)Hibernate和MyBatis都支持JDBC(Java DataBase Connectivity,java数据库连接)和JTA(Java Transaction API,Java事务APIApplication Programming Interface,应用程序编程接口)事务处理。

注:jdbc和jta的主要作用是增强数据访问能力。

(3)基于ORM(Object Relational Mapping 对象关系映射思想解决了entity和数据库的映射问题


不同点:

(1)sql方面:mybaits通过mapper.xml维护映射结果,程序员手动编写sql相比hibernate自动生成hql(hibernate sql)更加灵活,sql调优更加容易(hibernate因为更好的封装性,开发效率提高的同时,sql语句调优要更费力,当然可以手动修改sql来优化,但是同时也会影响开发效率);hibernate的hql数据库移植性更好,体现在强壮性。hibernate在级联删除的时候效率低;数据量大, 表多的时候,基于关系操作会变得复杂。

(2)缓存方面:mybatis和hibernate都可以使用第三方缓存,而hibernate相比maybatis有更好的二级缓存机制。


企业进行技术选型,以低成本高回报作为技术选型的原则,根据项目的技术力量进行选型。

猜你喜欢

转载自blog.csdn.net/zwj1030711290/article/details/80040007