Mybatis01__Mybatis简介

一、Mybatis简介

1、MyBatis;和数据库进行交互;持久化层框架(SQL映射框架)
  1、从原始的JDBC----dbutils(QueryRunner)-------JdbcTemplate----xxx;这些与数据库进行交互的工作单元称为工具.
    工具:一些功能的简单封装.
    框架:某个领域的整体解决方案;缓存,考虑异常处理问题,考虑部分字段映射问题.
  2、不使用原生JDBC的原因
    1、麻烦.(注册驱动-获取连接-书写sql语句--获得sql语句执行者statement对象--封装结果).
    2、sql语句是硬编码在程序中的;耦合(数据库层的代码和java代码耦合).

2、Hibernate-数据库交互的ORM框架(ORM:Object Relation Mapping 对象关系映射) Hbiernate是全自动框架
  1、创建好javaBean,然后使用注解实现映射,然后获取对象.

@Table("t_employee")
class Employee{
	private Integer empId;
	private String empName;
}
  session.get("1",Employe.class);

  2、 Hibernate缺点:
    1、定制sql,(SQL语句是非常关键的,我们往往希望自己写SQL,例如很多表之间的关联查询,我们只需要很少的一些字段,如果交给Hibernate去做,它没有那么智能,会去查询很多表,对数据库的负担很大).
    2、HQL,(虽然Hibernate有自己特有的SQL语法HQL,但是我们要熟悉另外的一门SQL会加大学习成本,学习难度高).
    3、全映射框架,部分字段映射很难;能做.(Hibernate是全映射框架,例如很多表之间的关联查询,我们只需要很少的一些字段,如果交给Hibernate去做,它没有那么智能,会去查询很多表,并且把表中所有的数据都查询出来,对数据库的负担很大,它也可以实现部分字段映射,但是你要知道Hibernate的底层原理,以及工作机制,学习难度很大).

3、通过总结传统的框架和Hibernate全自动框架的优缺点,我们迫切的需要一款框架满足如下要求
  1、将重要的步骤(SQL语句)抽取出来,使得SQL和java代码解耦合,也便于后期的维护.  
  2、重要的步骤可以人工定制,其它步骤自动化.
  3、完全解决数据库的优化问题.

4、为了解决上述问题Mybatis就应运而生了 
  1、 Mybatis是一个轻量级的框架.
  2、 Mybatis底层就是对原生JDBC的一个简单封装.
  3、 既将java代码和sql语句分离出来了,还保留了自动化的功能,属于半自动化的持久层框架.

 
 
5、Hibernate和Mybatis之间的区别
  可以这么理解:将Hibernate比作全自动洗衣机,将Mybatis比作半自动的洗衣机;全自动洗衣机有各种各样的功能,但是有一些衣服是不能经过脱水、烘干操作(sql语句区分)的,必须要洗完了手动晾干,如果使用全自动的洗衣机就不合适了,并且耗电更高(对数据的压力更大).

 

原文地址:https://www.cnblogs.com/xiaomaomao/p/13645846.html