zoukankan      html  css  js  c++  java
  • mybatis与hibernate运行流程比较

    hibernate长时间没用,感觉生疏了,正好借这篇文章整合下知识,顺便复习比较下两种框架。

    概述:

    Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

    Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

    Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

    总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。 

    hibernate运行流程分析:


    1、通过 Configuration().configure();读取并解析 hibernate.cfg.xml 配置文件。
    2、由hibernate.cfg.xml中的<mappingresource="xx/xx/xxx.hbm.xml"/>读取解析映射信息。
    3、通过 config.buildSessionFactory();//得到 sessionFactory。
    4、sessionFactory.openSession();//得到 session。
    5、session.beginTransaction();//开启事务。
    6、persistent operate;   // 持久层操作
    7、session.getTransaction().commit();//提交事务
    8、关闭 session;
    9、关闭 sessionFactory;

    mybatis架构分析:

    1.mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

    2.mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

    3.通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

    4.由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

    5.mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

    6.Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

    7.Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

    8.Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程

  • 相关阅读:
    在微信移动端input file拍照或从相册选择照片后会自动刷新页面退回到一开始网站进入的页面
    华为手机点击按钮跳转链接不生效!!!
    css content 如何自定义生成图标?
    快速上手制作Icon Font
    一款全兼容的播放器 videojs
    video.js使用教程API
    jquery ajax 请求参数详细说明 及 实例
    前端性能优化
    Bootstrap3 CSS样式基本用法总结
    h5页面的公共css
  • 原文地址:https://www.cnblogs.com/daimzh/p/12854501.html
Copyright © 2011-2022 走看看