Hibernate 和 MyBatis 的增、删、查、改,对于业务逻辑层来说大同小异,对于映射层
而言 Hibernate 的配置不需要接口和 SQL,相反 MyBatis 是需要的。对于 Hibernate 而言 ,
不需要编写大量的 SQL,就可以完全映射,同时提供了日志、缓存、级联(级联比 MyBatis
强大)等特性, 此外还提供 HQL (Hibernate Query Language )对 POJO 进行操作,使用十
分方便,但是它也有致命的缺陷。

由于无须 SQL,当多表关联超过 3 个的时候,通过 Hibernate 的级联会造成太多性能的
丢失,又或者我现在访问一个财务的表,然后它会关联财产信息表,财产又分为机械、原
料等,显然机械和原料的字段是不一样的,这样关联宇段只能根据特定的条件变化而变化,
而 Hibernate 无法支持这样的变化 。 遇到存储过程, Hibernate 只能作罢。更为关键的是性能,
在管理系统的时代,对于性能的要求不是那么苛刻,但是在互联网时代性能就是系统的根
本,响应过慢就会丧失客户,试想一下谁会去用一个经常需要等待超过 10 秒以上的应用
呢?

以上的问题 MyBatis 都可以解决, MyBatis 可以自由书写 SQL、支持动态 SQL、处理
列表、动态生成表名、支持存储过程。这样就可以灵活地定义查询语句 ,满足各类需求和
性能优化的需要,这些在互联网系统中是十分重要 的。
但 MyBatis 也有缺陷 。首先,它要编写 SQL 和映射规则,其工作量稍微大于 Hibernate 。
其次,它支持的工具也很有限,不能像 Hibernate 那样有许多的插件可以帮助生成映射代码
和关联关系,而即使使用生成工具,往往也需要开发者进一步简化, MyBatis 通过手工编
码,工作量相对大些。所以对于性能要求不太苛刻的系统,比如管理系统、 ERP 等推荐使
用 Hibernate;而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis 。

最新文章

  1. SMTP Error: Could not connect to SMTP host
  2. K - Least Common Multiple
  3. 算法小节(一)——斐波那契数列(java实现)
  4. SQL exists( select 1 from
  5. 网络攻击之二:XSS(之一是SQL注入,前面有文章)
  6. 基于spark实现表的join操作
  7. Dynamips做CCNA的实验,说是找不到telnet的解决方案
  8. python读取文件通过正则过滤需要信息然后保存到新文件里
  9. BZOJ 1901: Zju2112 Dynamic Rankings( BIT 套 BST )
  10. [置顶] Embedded Server:像写main函数一样写Web Server
  11. Java面试12|Linux及Shell脚本
  12. 聊聊AngularJs
  13. Oracle问题之ORA-12560TNS:协议适配器错误
  14. LDAP-HA安装与配置(Keepalived方式实现)
  15. HTML5在线预览PDF
  16. Python 对图片进行人脸识别
  17. odoo10 入门
  18. 【error】'isnan' was not declared in this scope
  19. css与html 与js的基础语法
  20. C、C ++的内存模型

热门文章

  1. 教程:SpagoBI开源商业智能之XML Template 图表模板
  2. 新手谈Linux
  3. ubuntu 创建swap分区
  4. [Laravel] 03 - DB facade, Query builder & Eloquent ORM
  5. php 启动服务器监听
  6. nodejs小问题拾遗
  7. MyEclipse启动Tomcat缓慢的原因及解决办法
  8. C# MVC+EF—页面搭建
  9. ERP项目实施记录05
  10. Saltstack之通过grains在配置文件中赋值