一、关键字说明:
oop:面向对象
aop:面向切面
ioc:控制反转
orm:对象关系映射
pojo:数据库表映射的java实体类

二、常识说明:
1.hibernate和mybatis都属于持久层、orm框架,都可以通过xml或者注解来提供映射规则。
2.hibernate是完全面向POJO,mybatis不是。hibernate基本不再需要编写SQL,就可以通过映射关系来操作数据库,是一种全表映射的体现。
而mybatis则需要使用者提供SQL去运行。
3.myBatis只需要一个映射xml文件、一个java映射类,有趣的是不需要实体bean类。

三、Hibenate和Mybatis的区别
Hiernate和Mybatis的增删查改,对于业务逻辑层来说大同小异,对于映射层而言Hibernate的配置不需要借口和SQL,相反Mybatis则是需要的。
对于Hibernate而言,不需要编写大量的SQL,就可以完全映射,同时提供了日志、缓存、级联(级联比MyBatis强大)等特性,此外还提供HQL(Hibernate Query Language)对POJO进行操作,
使用十分方便,但是它也有致命的缺陷。
由于无须SQL,当多表关联超过3个的时候,通过Hibernate的级联会造成太多的性能丢失,又或者我现在访问一个财务的表,然后他会关联财产信息表,财产又分为机械、原料等,显然机械和原料是不同的,
这样关联字段只能根据特定的条件变化而变化,而Hibernate无法支持这样的变化。遇到存储过程,Hibernate只能作罢。更为关键的是性能,在管理系统的时代,对于性能的要求不是那么苛刻,但是在互联网
时代性能就是系统的根本,响应过慢就会丧失客户,试想一下谁会用一个经常需要等待超过10s以上的应用呢?
以上的问题Mybatis都可以解决,Mybatis可以自由书写SQL、支持动态SQL、处理列表、动态生成表名、支持存储过程。这样就可以灵活地定义查询语句,满足各类需求和性能优化的需要,这些在互联网系统中是十分重要的。
但MyBatis也有缺陷。首先,它需要编写SQL和映射规则,其工作量稍微大于Hibernate。其次它支持的工具也很有限,不能像Hibernate那样有很多插件可以帮助生成映射代码和关联关系,而即使使用生成工具,往往也需要开发者
进一步简化,Mybatis通过手工编码,工作量相对大些。所以对于性能要求不太严苛的系统,比如管理系统、ERP系统等推荐使用Hibernate;而对于性能要求高、响应快、灵活的系统则推荐使用Mybatis。

最新文章

  1. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】
  2. 查看nginx在安装时开启了哪些模块
  3. Swift----方法 、 下标 、 继承 、 初始化 、 析构方法 、 可选链
  4. 原创:新手布局福音!微信小程序使用flex的一些基础样式属性
  5. Linux(Ubuntu)下如何安装JDK
  6. HLSL之漫反射光
  7. MAC 如何设置文件夹权限为777
  8. CrazePony飞行器--通信部分介绍【转】
  9. View页面根据权限显示不同的内容
  10. asp.net 获取url
  11. 杭电 2602 Bone Collector
  12. hex、bin、elf、axf文件区别
  13. Laravel Packages 开发
  14. ajax在ie下返回未定义解决方案
  15. 设计模式浅谈----策略模式(c#及java实现)
  16. shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
  17. socket编程实例
  18. JAXBContextAPI详解
  19. BZOJ3932 主席树
  20. [OutLook]关闭Outlook时最小化

热门文章

  1. 机器人操作系统(ROS)教程22:ROS的3D可视化工具—rviz
  2. 学习FPGA有必要写SDRAM控制器吗?
  3. 【原创】 HBase 配置指南
  4. python开发进程:进程开启方式&多进程
  5. Java 对象和实例的区别
  6. java 删除文件夹 / 删除某文件夹下的所有文件
  7. Flask之自定义模型类
  8. 「小程序JAVA实战」 小程序wxss样式文件的使用(七)
  9. 「小程序JAVA实战」微信小程序简介(一)
  10. delphi c++builder 判断工程类型 超级系统变量