Mybatis VS Hibernate

  1. Hibernate是全自动,mybatis是半自动
    a. Hibernate可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构自动生成sql。
    b. Mybatis只有基本的字段映射,对象数据及关系需手动写sql来实现与管理。
  2. Hibernate数据库移植性远大于mybatis
    a. hibernate通过强大的映射结构和hql语法,降低了与数据库的耦合性
    b. mybatis需要手写sql,如果sql不具有通用性或与具体数据库特性相关,移植性则会降低很多。
  3. Hibernate拥有完整的日志系统,mybatis则欠缺一些
    a. hibernate日志涉及sql记录、关系异常、优化警告、缓存提示、脏数据警告等
    b. mybatis除了基本记录功能外,功能相对薄弱
  4. Mybatis需要关心更多细节
    a. hibernate配置复杂,学习成本高
    b. mybatis模式上与jdbc很像,容易上手,但是细节的忽略容易产生bug,开发速度快,但出稳定版本慢
  5. sql直接优化上,mybatis方便得多
    a. hibernate许多sql自动生成,虽有hql,但若与联表复杂查询,只能使用原生sql, 此时开发模式又需转变,不太方便
    b. mybatis较为小巧方便,灵活性好。

jdbc与二者的联系与区别

  • 从层次上看
    • a. jdbc是较底层的持久层操作方式
    • b. hibernate和mybatis则是在JDBC的基础上进行封装
  • 从功能上看
    • a. jdbc就是
      • i. 简单的建立数据库连接
      • ii. 创建statement
      • iii. 将sql语句传给statement去执行
      • iv. 又返回结果的查询语句,将结果放入ResultSet中
      • v. 通过对ResultSet对象的遍历操作来获取数据
    • b.Hibernate将数据库中的数据表映射为持久层的Java对象,对sql语句进行修改和优化比较困难
    • c. Mybatis将sql语句的输入参数和输出参数映射为Java对象,优化和修改都很方便
  • 从使用上看
    • a. JDBC:进行底层编程,对性能要求极高的
    • b. Hibernate:对数据库进行完整性控制
    • c. Mybatis:灵活使用sql语句

猜你喜欢

转载自blog.csdn.net/weixin_43236610/article/details/82768734
今日推荐