黑马程序员技术交流社区
标题:
成都校区
[打印本页]
作者:
韶华倾逝
时间:
2018-12-5 21:22
标题:
成都校区
今天为大家分享MyBatis框架的简介;
在移动互联网时代, MyBati s 成为了目前互联网Java 持久框架的首选,与Hibernate 消除SQL 不同, My Batis 不屏蔽SQL 。不屏蔽SQL 的优势在于,程序员可以自己制定SQL规则,无须H ibernate 自动生成规则,这样能够更加精确地定义SQL ,从而优化性能。它更符合移动互联网高并发、大数据、高性能、高响应的要求。与Hibernate 一样, MyBatis 也需要一个映射文件把POJO 和数据库的表对应起来。
My Batis 在业务逻辑上和Hibernate 是大同小异的。其区别在于, My Batis 需要提供接口和SQL ,这意味着它的工作量会比Hibernate 大,但是由于自定义SQL 、映射关系,所以其灵活性、可优化性就超过了Hibernate 。互联网可优化性、灵活性是十分重要的, 因为一条SQL 的性能可能相差十几倍到几十倍,这对于互联网系统是十分重要的。
Hibernate 和MyBatis 的区别
Hibernate 和My Batis 的增、删、查、改,对于业务逻辑层来说大同小异,对于映射层而言Hibernate 的配置不需要接口和SQL ,相反MyBatis 是需要的。对于Hibernate 而言,不需要编写大量的SQL ,就可以完全映射,同时提供了日志、缓存、级联(级联比MyBatis强大)等特性, 此外还提供HQL (Hibernate Query Language )对POJO 进行操作,使用十分方便,但是它也有致命的缺陷。由于无须SQL ,当多表关联超过3 个的时候,通过Hibernate 的级联会造成太多性能的丢失,又或者我现在访问一个财务的表,然后它会关联财产信息表,财产又分为机械、原料等,显然机械和原料的字段是不一样的,这样关联宇段只能根据特定的条件变化而变化,而H ibernate 无法支持这样的变化。遇到存储过程, Hibernate 只能作罢。更为关键的是能,在管理系统的时代,对于性能的要求不是那么苛刻,但是在互联网时代性能就是系统的根本,响应过慢就会丧失客户,试想一下谁会去用一个经常需要等待超过10 秒以上的应用呢?以上的问题MyBatis 都可以解决, MyBatis 可以自由书写SQL 、支持动态SQL 、处理列表、动态生成表名、支持存储过程。这样就可以灵活地定义查询语句,满足各类需求和性能优化的需要,这些在互联网系统中是十分重要的。但MyBatis 也有缺陷。首先,它要编写SQL 和映射规则,其工作量稍微大于Hibernate 。其次,它支持的工具也很有限,不能像Hibernate 那样有许多的插件可以帮助生成映射代码和关联关系,而即使使用生成工具,往往也需要开发者进一步简化, MyBatis 通过手工编码,工作量相对大些。所以对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用Hibernate ;而对于性能要求高、响应快、灵活的系统则推荐使用MyBatis 。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2