zoukankan      html  css  js  c++  java
  • Mybatis与Hibernate概述

    1 Mybatis与Hibernate概述   

    两者均是当前最流行的ORM框架之一,所谓ORM(Object Relational Mapping),即对象关系映射,它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。

    Hibernate是一个开放源代码的对象关系映射框架,对JDBC提供了较为完整的封装,建立对象与数据库表的映射。是一个全自动的、完全面向对象的持久层框架。在AC-WAN的代码中,我们用到的就是这个ORM框架,想必大家都会有所感受,我们直接操作的是数据库映射的java对象,基本上不用写那些sql语句,封装还是很完美的,也有一部分需要自己在Dao类中添加一部分的sql语句,然后调用hibernate封装好的方法,直接执行,方便快捷,操作数据库,我们只需关注上层的Dao类函数,无需关注底层是怎么实现的。

    但是到了NCE的版本中,采用了Spring的架构,另外数据库则采用了Mybatis的框架,其实Mybatis也是一个开源对象关系映射框架,开发过NCE版本的同学应该知道,它应该算是一个半自动化的持久层框架,不像Hibernate封装的那么完善,下面就介绍两者的区别

    [ 编辑本段 ]   [ 回目录 ]2.1 Hibernate是全自动,Mybatis是半自动   

    hibernate是全自动,在开发中,sql语句已经被封装,直接可以使用,在系统的开发中,速度相对较快;

    Mybatis 属于半自动化,sql需要手工完成,需要自己去定义Mapper.xml,里面需要自己完成Sql语句的操作,稍微繁琐;

    [ 编辑本段 ]   [ 回目录 ]2.2 可移植性   

    从可移植性上来说,Hibernate数据库移植性要强于MyBatis的数据库移植性,因为不同的数据库需要写不同的SQL。

    这个从写NCE框架的LLT就可以感受到,NCE版本使用的是U2000的LLT框架,LLT框架使用的H2DB数据库,其不支持uuid这个Sql语句函数,但是支持random_uuid这个函数,但是再实际环境中,我们用的是mysql数据库,正好跟其相反, 由此看出不同的数据库支持的函数不同,导致其针对不同的数据库可移植性差。Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差

    [ 编辑本段 ]   [ 回目录 ]2.3 日志系统   

    Hibernate日志系统非常健全,涉及广泛,包括:SQL记录、关系异常、优化警告、缓存提示、脏数据警告等;而MyBatis则除了基本记录功能外,功能薄弱很多。

    [ 编辑本段 ]   [ 回目录 ]2.4 SQL优化   

    SQL直接优化上,MyBatis要比Hibernate方便很多,

    由于MyBatis的sql都是写在Mapper的xml里,因此优化sql比Hibernate方便很多。而Hibernate的sql很多都是自动生成的,无法直接维护sql;虽然Hibernate有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与orm不同,需要转换思维,因此使用上不是非常方便。总之写sql的灵活度上Hibernate不及MyBatis。

    [ 编辑本段 ]   [ 回目录 ]2.5 更新功能   

    从更新功能上来说 Hibernate会更新所有字段,而MyBatis可以只需要更新其中一个字段,所以在性能上有一些差异。

    [ 编辑本段 ]   [ 回目录 ]2.6 安全性   

    Hibernate是预编译的,MyBatis可能存在SQL注入问题,另外使用Hibernate对数据库类型进行切换时,成本明显低于MyBatis

    [ 编辑本段 ]   [ 回目录 ]3 一句话总结   

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

    Hibernate:强大、方便、高效、复杂、间接、全自动化

  • 相关阅读:
    Java JMX 监管
    Spring Boot REST(一)核心接口
    JSR 规范目录
    【平衡树】宠物收养所 HNOI 2004
    【树型DP】叶子的颜色 OUROJ 1698
    【匈牙利匹配】无题II HDU2236
    【贪心】Communication System POJ 1018
    【贪心】Moving Tables POJ 1083
    Calling Extraterrestrial Intelligence Again POJ 1411
    【贪心】Allowance POJ 3040
  • 原文地址:https://www.cnblogs.com/Joyson-Blog/p/8945616.html
Copyright © 2011-2022 走看看