美文网首页
Java大数据基础:Mybatis和Hibernate对比分析

Java大数据基础:Mybatis和Hibernate对比分析

作者: 成都加米谷大数据 | 来源:发表于2020-12-22 17:43 被阅读0次

    在Java企业级平台开发任务当中,持久层框架的选择,Mybatis和Hibernate都占据一定的市场。从大趋势来说,传统企业偏爱Hibernate,而互联网更偏爱Mybatis。今天的大数据基础分享,我们就来对Mybatis和Hibernate两个框架做个简单的对比分析。

    一、关于Mybatis

    MyBatis本是Apache的一个开源项目iBatis,2010年迁移到google code,并且改名为MyBatis,之后就以Mybatis命名固定下来,2013年11月迁移到Github。

    MyBatis是一款优秀的持久层框架,基于Java,内部封装了JDBC,使得开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

    具体来说,Mybatis支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

    MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。

    二、关于Hibernate

    Hibernate同样也是一个优秀的持久层框架,出身于sf.net,现在已经成为Jboss的一部分。Hibernate作为O/R mapping框架,与Mybatis常常被拿来作比。

    Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。开发者往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作,甚至不需要对SQL的熟练掌握,Hibernate/OJB会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行。

    三、MyBatis和Hibernate的对比

    MyBatis与Hibernate都是对象关系映射(ORM)框架,都是用于将数据持久化的框架技术,都是对JDBC的封装。两者的区别是存在于多方面的:

    1.Hibernate是全自动,而MyBatis是半自动

    Hibernate完全可以自动生成SQL。而MyBatis仅有基本的字段映射,仍然需要通过手写SQL来实现和管理。

    2.Hibernate编码量小会减少开发周期,MyBatis编码量大会拖慢开发周期

    Hibernate是对JDBC的高度封装,使用起来几乎不用写SQL,开发的时候,会减低开发周期.MyBatis需要自己写SQL,编码量较大,会拖慢开发周期。

    3.Hibernate数据库移植性远大于MyBatis

    Hibernate通过它强大的映射结构和HQL语言,大大降低了对象与数据库(oracle、mySQL等)的耦合性,而MyBatis由于需要手写SQL,移植性也会随之降低很多,成本很高。

    4.MyBatis入门简单,Hibernate入门比较难

    MyBatis入门简单,即学即用。Hibernate学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要开发者的经验和能力都很强才行。

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

    由于MyBatis的SQL都是写在xml里,因此优化SQL比Hibernate方便很多。而Hibernate的SQL很多都是自动生成的,无法直接维护SQL;总之,写SQL的灵活度上Hibernate不及MyBatis。

    四、MyBatis和Hibernate选哪个?

    在实际开发任务当中,对于持久层框架的选择,不仅仅要考虑到它们的特性及性能,更要根据项目需求去考虑究竟哪一个更适合项目开发。

    举个简单的例子,一个项目中用到的复杂查询基本没有,就是简单的增删改查,这样选择Hibernate效率就很快了,因为基本的SQL语句已经被封装好了,可以节约时间提升效率;而对于一个大型项目,复杂语句较多,选择MyBatis就会更适合,而且SQL语句的管理也比较方便。

    持久层框架的选择,是大数据基础架构设计当中需要考虑的重要一环,Hibernate和Mybatis建议可以结合实际来选择。

    相关文章

      网友评论

          本文标题:Java大数据基础:Mybatis和Hibernate对比分析

          本文链接:https://www.haomeiwen.com/subject/biwsnktx.html