• jdbc依赖在各个框架的意义和发展


    一、JDBC是规范(接口)不是实现(类)JDBC 是一种规范,由Sum公司它提供了一套完整的接口,由数据库厂商根据特点予以实现,因此只要学会接口的使用就可以轻松的用 JDBC编写适用于各种数据库的程序

    传统JDBC操作:

    1. 使用JDBC编程需要连接数据库,注册驱动和数据库信息
    2. 操作Connection,打开Statement对象。
    3. 通过Statement执行SQL,返回结果到ResultSet对象。
    4. 使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。
    5. 关闭数据库的相关资源。

    传统jdbc存在的不足:

    1. 工作量相对较大,每次都要去创建,关闭,获取。代码重复较大
    2. 频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源;
    3. JDBC编程可能产生的异常进行捕捉处理并正确关闭资源

    二、这时候就会出现一个持久层框架(对象-映射-关系型数据库)去解决问题,例如mybatis、hibernate。用于实现面向对象编程语言里不同类型系统的数据之间的转换。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射。ORM 是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM 所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了 ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。

    mybatis

    1. 易于上手和掌握。
    2. sql写在xml里,便于统一管理和优化。
    3. 解除sql与程序代码的耦合。
    4. 提供映射标签,支持对象与数据库的orm字段关系映射
    5. 提供对象关系映射标签,支持对象关系组建维护
    6. 提供xml标签,支持编写动态sql。
      hibernate
    7. 消除了代码的映射规则,它全部被分离到XML或者注解里面去配置。
    8. 无需再管理数据库连接,它也配置到XML里面。
    9. 一个会话中,不要操作多个对象,只要操作Sesison即可。
    10. 关闭资源只需要关闭一个Session即可。

    三、mysql-connector-java是什么?
    mysql-connector-java 是MySQL提供的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包,它的主要用途有三个:

    1. 与数据库建立连接
    2. 发送 SQL 语句
    3. 处理结果

    四、Mybatise和jdbc

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

    五、mybatis-spring整合jar包功能(Spring与Mybatis整合)
    在学习mybatis配置时,对于mybatis-config配置的时候我们发现,大致是需要配置三个方面:setting、datasource、mappers。而mybatis的setting往往使用默认配置,所以我们经常配置datasource数据源与mappers映射,但学习spring之后发现,对于datasource的配置交由spring进行管理,所以在spring与mybatis整合后mybatis的配置文件中将不需要配置datasource,mybatis的配置几乎都会在Spring配置之中完成。当然要想要实现spring与mybatis的整合,其中最重要的就是mybatis-spring.jar 包

    1. mybatis-spring会用于帮助你将 MyBatis 代码无缝地整合到 Spring 中。
    2. Spring 将会加载必要的 MyBatis 工厂类和 Session 类
    3. 提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。
    4. 它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中
    5. 将 Mybatis 的异常转换为 Spring 的 DataAccessException

    六、Mapper代理(Mybatis)
    1、 原始DAO开发中存在的问题:
    a) DAO实现方法体中存在很多过程性代码。
    b) 调用SqlSession的方法(select/insert/update)需要指定Statement的id,存在硬编码,不利于代码维护。
    2、 Mapper动态代理方法:程序员只需要写dao接口(Mapper),而不需要写dao实现类,由mybatis根据dao接口和映射文件中statement的定义生成接口实现类代理对象。
    3、 目标:通过一些规则让mybatis根据dao接口和映射文件中statement的定义生成接口实现代理对象。

    Spring jdbc与传统jdbc
    Spring jdbc就是在原生的JDBC代码上进行封装,提供一些接口,节省大量代码,传统的JDBC步骤为:建立连接、定义sql,执行sql,返回结果集、关闭连接释放资源。而在spring中,只需要调用相应的接口来实现sql定义和获取结果集,其他步骤都可以由spring实现。

    七、springboot之spring-boot-starter-jdbc
    第一个是对数据源的装配,第二个是提供一个JdbcTemplate简化使用,第三个是事务。
    如果想SpringBoot为我们提供自动配置数据访问的基础设施,那么,我们需要直接或间接依赖spring-jdbc,一旦spring-jdbc位于我们SpringBoot应用的classpath,即会触发数据访问相关的自动配置行为,最简单的方法就是把spring-boot-starter-jdbc加为应用的依赖。(该spring-boot-starter-jdbc包提供对JDBC操作的支持,包括连接数据库、操作数据库,以及管理数据库连接等等)(spring-boot-starter-web:该starter包括web应用程序的依赖库)

  • 相关阅读:
    C2基础设施威胁情报对抗策略
    初级篇—第一章初识数据库
    docker 启动关闭,设置仓库地址
    编译“零汇编(Zero-Assembler)“的OpenJDK11
    vue设计原理-带你重走vue诞生路程
    CSS笔记——触发式动画Transition、主动式动画Animation、Transfrom 动画、CSS 3D 动画、阴影和滤镜样式
    Ribbon学习笔记一
    动态规划课堂2-----路径问题
    【论文阅读笔记】XLINK:淘宝短视频传输的多径QUIC协议
    在Postman中调用JShaman免费JS混淆加密接口,实现JS代码加密
  • 原文地址:https://blog.csdn.net/weixin_46672808/article/details/127953333