欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis 与hibernate

程序员文章站 2022-12-28 10:11:01
共同点 (1)Hibernate与MyBatis都是通过SessionFactoryBuider由XML配置文件生成SessionFactory,由SessionFactory 生成Session,由Session来开启执行事务和SQL(Structured Query Language,结构化查询 ......

共同点

(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事务api(application 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有更好的二级缓存机制

(3)结构

hibernate:hibernate是当前最流行的orm框架之一,对jdbc提供了较为完整的封装。hibernate的o/r mapping实现了pojo 和数据库表之间的映射,以及sql的自动生成和执行。

mybatis:mybatis同样也是非常流行的orm框架,主要着力点在于 pojo 与 sql 之间的映射关系。然后通过映射配置文件,将sql所需的参数,以及返回的结果字段映射到指定 pojo 。相对hibernate“o/r”而言,mybatis 是一种“sql mapping”的orm实现。

(4)难易度

hibernate的真正掌握要比mybatis困难,hibernate比mybatis更加重量级一些。

mybatis框架相对简单很容易上手,但也相对简陋些。

(5)开发工作量

mybatis需要我们手动编写sql语句,回归最原始的方式,所以可以按需求指定查询的字段,提高程序的查询效率。

hibernate也可以自己写sql语句来指定需要查询的字段,但这样破坏了hibernate封装以及简洁性

hibernate优势

  • hibernate的dao层开发比mybatis简单,mybatis需要维护sql和结果映射。
  • hibernate对对象的维护和缓存要比mybatis好,对增删改查的对象的维护要方便。
  • hibernate数据库移植性很好,mybatis的数据库移植性不好,不同的数据库需要写不同sql。
  • hibernate有更好的二级缓存机制,可以使用第三方缓存。mybatis本身提供的缓存机制不佳
  • mybatis可以进行更为细致的sql优化,可以减少查询字段。

mybatis优势

mybatis容易掌握,而hibernate门槛较高。