• MyBatis的发展和选型


    xlecho编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!


    参考文章列表:

    数据层框架的发展史

    JDBC编码的几大问题和MyBatis等框架的发展支持原因?
    在最初编写JDBC连接数据库的时候,各种代码操作较为复杂,而且有很多缺陷。缺陷总结如下:

    • 方法的封装问题
    • 数据源的支持
    • 映射结果集的接收和处理
    • SQL语句硬编码
    • 程序参数只能按照顺序传入(占位符)
    • 没有实现实体类到数据库记录的映射
    • 没有提供缓存等功能

    工具类封装的出现解决了一部分问题

    相应的工具类如:springjdbc、jdbcutils、Apache DbUtils等。这样的工具类主要解决了一下几个问题:

    • 方法的封装
    • 数据源的支持
    • 映射结果集

    工具类的响应实现解决了部分JDBC的缺陷,但是并不完美。每一次的改进和工具类的出现的就是我们框架的前身出现,框架也是工具。在越来越完善的解决方案的出现之后,ORM框架基本就成型了。同时解决了以上JDBC列出来的各种问题。

    ORM框架,全称Object Relational Mapping,对象关系的映

    面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

    ORM框架的基本准则

    • A. 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量
    • B. 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一
    • C.易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)
    • D.易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。

    最早的ORM框架hibernate

    Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象!

    • Hibernate 优势

      • 类别到数据库表格中,并且不用编写任何代码。
      • 为在数据库中直接储存和检索 Java 对象提供简单的 APIs。
      • 如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。
      • 抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。
      • Hibernate 不需要应用程序服务器来操作。
      • 操控你数据库中对象复杂的关联。
      • 最小化与访问数据库的智能提取策略。
      • 提供简单的数据询问。
    • Hibernate 响应的一些问题

      • 无法自定义SQL,优化相对困难
      • 不制动动态的SQL
      • 复杂的表关系会导致Hibernate开发难度
      • 加载问题

    什么是 MyBatis?

    是一款面向对象和返回集关系的数据层封装,有效的减少jdbc的代码。

    • 缺点:
      • 不方便移植,数据库更换需要字段比较麻烦,需要改写sql
      • 对开发人员所写的SQL依赖很强。
    • 优点:
      • 使用连接池对连接进行管理
      • SQL和代码分离,集中管理
      • 参数映射和动态SQL
      • 结果集映射
      • 缓存管理
      • 重复SQL的提取
      • 插件机制
      • 手写sql,能够有效的精准把控查询的速度,便于优化查询速度
      • mybatis不会对应用程序或者数据库的现有设计强加任何影响
      • 通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
      • 保证名称相同,配置好映射关系即可自动映射或者,不配置映射关系,通过配置列名=字段名也可完成自动映射。

    什么是 Spring Data JPA(本文JPA只写Spring Data JPA)

    Spring Data JPA是更大的Spring Data系列的一部分,可以轻松实现基于JPA的存储库。此模块处理对基于JPA的数据访问层的增强支持。它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。

    选择什么样的ORM框架参考:

    • 业务相对简单项目可以使用Hibernate
    • 需要灵活SQL的选择可以使用MyBatis(SQL过长和SQL很复杂的情况)
    • 对性能要求比较高可以使用JDBC(如:我们写的项目很小,或者说就是需要几个接口,这个时候我们选择框架就会过于臃肿和复杂)
    • Sping JDBC可以和 ORM框架混合使用(这种情况很少,但是如果某些业务可能单独需要数据源对接某一个接口,这个时候可能要适配器兼容JDBC接入)

    做一个有底线的博客主

  • 相关阅读:
    Linux下的文件批量转换为UTF8编码-enca
    【转】valgrind的简介以及安装
    springboot2.0整合logback日志(详细)
    springboot整合redis
    用Thymeleaf在实际项目中遇到的坑
    RedisTemplate和StringRedisTemplate的区别
    @EnableCircuitBreaker熔断超时机制
    eclipse转到idea过程中的基本设置...
    java.lang.NoSuchMethodError
    springcloud服务提供producer and 服务调用consumer
  • 原文地址:https://www.cnblogs.com/xlecho/p/11521653.html
Copyright © 2020-2023  润新知