美文网首页
hibernate和mybatis对比

hibernate和mybatis对比

作者: Mango_lxh | 来源:发表于2018-09-28 00:24 被阅读0次

    什么是mybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架
    MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录 。

    MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。

    Mybatis创建sqlSessionFactory

    Reader reader= Resources.getResourceAsReader("Configuration.xml");
    
    SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
     
    //创建SessionFactory 
    SqlSessionFactory factory =sfb.build(reader);
    
    factory.openSession();
    
    session.close();
    

    mybatis的范围和生命周期

    sqlSessionFactoryBuilder
    最佳范围是本地方法范围.
    sqlSessionFactory:
    一旦创建在应用执行期间都存在,在应用期间不要重复建立多次。
    sqlSession
    每个线程应该有自己的sqlSession实例。最佳范围是请求和方法范围。不能将实例的引用放到一个类的静态字段,甚至实例字段中。不能放到任何类型的管理范围中,例如httpSession中。sqlSession需要明确关闭。
    mapper
    映射器是创建绑定映射语句的接口。最佳的范围是方法范围,不需要明确关闭。

    orm工具的基本思想

    无论是用过的hibernate,mybatis,你都可以发现他们有一个共同点:

    1. 从配置文件(通常是XML配置文件中)得到sessionfactory.
    2. 由sessionfactory 产生 session
    3. 在session 中完成对数据的增删改查和事务提交等.
    4. 在用完之后关闭session 。
    5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件

    Hibernate与Mybatis对比总结

    两者相同点:
    Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

    Hibernate和MyBatis都支持JDBC和JTA事务处理。

    Mybatis优势:

    MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

    MyBatis容易掌握,而Hibernate门槛较高。

    Hibernate优势:

    Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
    Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
    Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
    Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

    总结:
    Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
    Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

    MyBatis入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
    MyBatis的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

    相关文章

      网友评论

          本文标题:hibernate和mybatis对比

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