zoukankan      html  css  js  c++  java
  • 初始Mybatis

    框架技术
    是一个应用程序的半成品
    提供可重用的公共结构
    按一定规则组织的一组组件
    优势:
    不用再考虑公共问题
    专心在业务实现上
    结构统一,易于学习、维护
    新手也可写出好程序
    主流框架:
    MVC设计模式的实现
    拦截器
    可变和可重用的标签
    ORM,简化数据库操作
    DAO层
    依赖注入容器 / AOP实现
    声明式事务
    简化Java EE应用
    黏合剂,将大家组装到一起
    Spring MVC
    结构最清晰的MVC Model2实现
    高度可配置,支持多种视图技术
    定制化开发
    半自动化的ORM实现
    DAO层
    动态SQL
    小巧灵活、简单易学
    ORM与持久化
    什么是数据持久化
    持久化是程序数据在瞬时状态和持久状态间转换的状态;
    ORM(Object Relational Mapping)
    编写程序的时候,以面向对象的方式处理数据
    保存数据的时候,却以关系型数据库的方式存储
    ORM解决方案包含下面四个部分
    在持久化对象上执行基本的增、删、改、查操作
    对持久化对象提供一种查询语言或者API
    对象关系映射工具
    提供与事务对象交互、执行检查、延迟加载以及其他优化功能 
    Mybatis简介
    特点
    基于SQL语法,简单易学
    能了解底层封装过程
    SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
    方便程序代码调试
    使用MyBatis的开发步骤
    1.下载mybatis-3.2.2.jar包并导入工程
    2.编写MyBatis核心配置文件(configuration.xml)
    3.创建实体类-POJO
    4.DAO层-SQL映射文件(mapper.xml)
    5.创建测试类
    1. 读取核心配置文件mybatis-config.xml
    2. 创建SqlSessionFactory对象,读取配置文件
    3. 创建SqlSession对象
    4. 调用mapper文件进行数据操作
    与JDBC相比Mybatis优势?
    优点
    1. 与JDBC相比,减少了50%以上的代码量
    2. 最简单的持久化框架,小巧并简单易学
    3. SQL代码从程序代码中彻底分离,可重用
    4. 提供XML标签,支持编写动态SQL
    5. 提供映射标签,支持对象与数据库的ORM字段映射
    缺点
    1. SQL语句编写工作量大,对开发人员有一定要求
    2. 数据库移植性差
    Mybatis和hibernate的异同
    相同点
    Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。;
    其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。Hibernate和MyBatis都支持JDBC和JTA事务处理。
    不同点
    1. hibernate是全自动,而mybatis是半自动
    hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。
    1. hibernate数据库移植性远大于mybatis
    hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(Oracle、MySQL等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。
    1. hibernate拥有完整的日志系统,mybatis则欠缺一些
    hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。
    1. mybatis相比hibernate需要关心很多细节
    hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期bug较多,因而开发出相对稳定的软件很慢,而开发出软件却很快。hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。
    1. sql直接优化上,mybatis要比hibernate方便很多
    由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;虽有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与orm不同,需要转换思维,因此使用上不是非常方便。总之写sql的灵活度上hibernate不及mybatis。
    1. 缓存机制上,hibernate要比mybatis更好一些
    MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
    而Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。
    Mybatis核心对象,作用,作用域
    1、SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供了多个build()方法重载
    作用域:存在于方法体内,也就是局部变量而已。
    2、SqlSessionFactory
    作用:SqlSessionFactory简单的理解就是创建SqlSession实例的工厂。
    MyBatis应用都是以SqlSessionFactory实例为中心,SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获取。有了它以后,顾名思义,就可以通过SqlSession提供的openSession()方法来获取SqlSession实例
    作用域:应用作用域  Application
    3.SqlSession
    使用方式
    通过SqlSession实例直接运行映射的SQL语句
    基于Mapper接口方式操作数据
    作用:SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection。它提供了面向数据库执行SQL命令所需的所有方法,可以通过SqlSession实例直接运行已映射的SQL语句
    作用域:作用域范围是request作用域或者方法体作用域内。
     

  • 相关阅读:
    第三方驱动备份与还原
    Greenplum 解决 gpstop -u 指令报错
    yum安装(卸载)本地rpm包的方法(卸载本地安装的greenplum 5.19.rpm)
    Java JUC(java.util.concurrent工具包)
    netty 详解(八)基于 Netty 模拟实现 RPC
    netty 详解(七)netty 自定义协议解决 TCP 粘包和拆包
    netty 详解(六)netty 自定义编码解码器
    netty 详解(五)netty 使用 protobuf 序列化
    netty 详解(四)netty 开发 WebSocket 长连接程序
    netty 详解(三)netty 心跳检测机制案例
  • 原文地址:https://www.cnblogs.com/duan-YF/p/13799001.html
Copyright © 2011-2022 走看看