今天开始就正式进入学习MyBatis框架的光明大道了,在正式学习之前先来刷刷框架学习前的副本。
百科MyBatis
百度百科
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
维基百科
MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。
MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本。其维护团队也包含iBATIS的初创成员。
MyBatis大本营
功能概况
与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码:SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式的把SQL语句执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,或者使用Apache Velocity集成的插件,SQL语句可以被动态的生成。
MyBatis与Spring Framework和Google Guice集成,这使开发者免于依赖性问题。
MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了基于 Java HashMap 的默认缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供API供其他缓存实现使用。
【摘自维基百科】
MyBatis基础知识
1、SqlMapConfig.xml(是MyBatis的全局配置文件,名称不固定)
- 配置数据源、事务等mybatis运行环境
- 配置映射文件(配置SQL语句)
- 多个mapper.xml(映射文件)
2、SQL SessionFactory(会话工厂),根据配置文件创建工厂
作用:创建SqlSession
3、SqlSession(会话)
是一个接口,面向用户(程序员)的接口
作用:操作数据库(CRUD)
4、Executor(执行器)
是一个接口(基本执行器、缓存执行器)
作用:SqlSession内部通过执行器操作数据库
5、mapped statement(底层封装对象)
作用:对操作数据库存储封装,包括SQL语句,输入参数,输出结果类型
输入参数类型:Java简单数据类型、hashmap、pojo
输出结果类型:Java简单类型、hashmap、pojo
6、数据库知识
Mybatis VS Hibernate
* Hibernate简要介绍*
在说MyBatis和Hibernate的区别前肯定要先介绍下基于ORM框架的Hibernate的啦
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
【摘自百度百科】
前段时间在学习Hibernate的时候,最开始的时候感觉挺难的,自认为Hibernate这个框架的门槛要比MyBatis高,在理解上边也要比MyBatis上要抽象点。但是当理解Hibernate基本原理后,发现我们在对数据库的操作上变为配置Hibernate,当配置好了Hibernate后,就只需要关心业务逻辑了,因为Hibernate已经帮我们处理好了POJO类与数据库关系表之间的映射。
VS Hibernate
在这里我就不细讲MyBatis和Hibernate两个框架的区别了,原因有三,
- 1、在此处,您不是很了解MyBatis,不管你是否了解Hibernate
- 2、我在这里不方便讲解两者的区别(这么拽的么?)
- 3、我也不是很了解两个框架的区别(哦,原来这才是真正的原因。。。)
好吧,如果你就是想先了解两者的区别,请猛点MyBatis和Hibernate相比,优势在哪里?