mybatis学习一

1、简介

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除 了几乎全部的 JDBC 代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。(相似Hibernate)

2、MyBatis和hibernate比较

1)hibernate是全自动,而mybatis是半自动。hibernate彻底能够经过对象关系模型实现对数据库的操做,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然须要经过手写sql来实现和管理。 
 2)hibernate数据库移植性远大于mybatis。hibernate经过它强大的映射结构和hql语言,大大下降了对象与数据库(Oracle、MySQL等)的耦合性,而mybatis因为须要手写sql,所以与数据库的耦合性直接取决于程序员写sql的方法,若是sql不具通用性而用了不少某数据库特性的sql语句的话,移植性也会随之下降不少,成本很高。
 3)hibernate拥有完整的日志系统,mybatis则欠缺一些。hibernate日志系统很是健全,涉及普遍,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱不少。 
 4)mybatis相比hibernate须要关心不少细节。hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正由于mybatis使用简单,才致使它要比hibernate关心不少技术细节。mybatis因为不用考虑不少细节,开发模式上与传统jdbc区别很小,所以很容易上手并开发项目,但忽略细节会致使项目前期bug较多,于是开发出相对稳定的软件很慢,而开发出软件却很快。hibernate则正好与之相反。可是若是使用hibernate很熟练的话,实际上开发效率丝绝不差于甚至超越mybatis。
 5)sql直接优化上,mybatis要比hibernate方便不少。因为mybatis的sql都是写在xml里,所以优化sql比hibernate方便不少。而hibernate的sql不少都是自动生成的,没法直接维护sql;虽有hql,但功能仍是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与orm不一样,须要转换思惟,所以使用上不是很是方便。总之写sql的灵活度上hibernate不及mybatis。 
 6)Hibernate有更好的二级缓存机制,可使用第三方缓存。而MyBatis的二级缓存机制不佳。

###3、Mybatis的功能架构分为三层程序员

1)API接口层:提供给外部使用的接口API,开发人员经过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操做。
3) 基础支撑层:负责最基础的功能支撑,包括链接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来做为最基础的组件。为上层的数据处理层提供最基础的支撑。
相关文章
相关标签/搜索