hibernate和mybatis的区别

  1、二者最大的区别sql

  针对简单逻辑,Hibernate与MyBatis都有相应的代码生成工具,能够生成简单基本的DAO层方法。数据库

  针对高级查询,MyBatis须要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,能够更专一于流程。缓存

  2、开发难度对比工具

  Hibernate的开发难度大于MyBatis,主要因为Hibernate比较复杂,庞大,学习周期比较长。学习

  MyBatis则相对简单,而且MyBatis主要依赖于生气了的书写,让开发者刚进更熟悉。日志

  3、sql书写比较对象

  Hibernate也能够本身写sql来指定须要查询的字段,但这样就破坏了Hibernate开发的简洁性,不过Hibernate具备本身的日志统计。开发

  MyBatis的sql是手动编写的,因此能够按照要求指定查询的字段,不过没有本身的日志统计,因此要借助Log4j来记录日志。io

4、数据库扩展性计较扩展

  Hibernate与数据库具体的关联在XML中,因此HQL对具体是用什么数据库并非很关心

  MyBatis因为全部sql都是依赖数据库书写的,因此扩展性、迁移性比较差。

 5、缓存机制比较

  Hibernate的二级缓存配置在SessionFactory生成配置文件中进行详细配置,而后再在具体的表对象映射中配置那种缓存。

  MyBatis的二级缓存配置都是在每一个具体的表对象映射中进行详细配置,这样针对不一样的表能够自定义不一样的缓冲机制,而且MyBatis能够在命名空间中共享相同的缓存配置和实例,经过Cache-ref来实现。

    二者比较,由于Hibernate对查询对象有着良好的管理机制,用户无需关心SQL,因此在使用二级缓存时若是出现脏数据,系统会报出错误提示。 而MyBatis在这一方面使用二级缓存时须要特别当心,若是不能彻底去顶数据更新操做的波及范围,避免cache的盲目使用,不然,脏数据的出现会给系统的正常运行带来很大的隐患。

相关文章
相关标签/搜索