首页 > 其他分享 >JDBC概述和原理

JDBC概述和原理

时间:2023-04-24 16:23:12浏览次数:44  
标签:JDBC java 数据库 接口 连接 概述 mysql 原理 public

  • JDBC目录

    数据库连接池可以优化对数据库的操作,提高效率

JDBC的概述

  • jdbc原理图

    不同的数据库的厂商制作的数据库的底层结构不同,如果使用Java来操作数据库,不同的数据库操作的方法不同。将造成管理困难
  • java定义接口进行改进

    此时的接口调用由各个数据库实现,java只是负责调用各个厂商实现的方法(具体的实现肯定不同)即可。
    此时方法的调用就统一了。而且避免了由java直接去调用数据库

各个厂家将实现的类打包成jar文件,或者称为驱动文件/类

想要连接哪个厂家的数据库必须要有这个厂商提供的驱动文件

JDBC模拟实现

假设我们就是java厂商来定义这个接口和假设是各个数据库的厂商来定义接口的实现类
模拟java厂商对Jdbc接口的定义

package com.hsp.edu;
//自定义jdbc接口(该接口用于指定连接和使用数据库的标准,由java实现)
public interface JdbcInterface {
    //1.连接数据库
    public Object getConnecttion();
    //2.crud操作
    public void crud();
    //3.关闭连接
    public void close();
}

模拟mysql厂商对接口实现类的定义

package com.hsp.edu;
//模拟mysql厂商实现java定义的接口
public class MysqlJdbcImplement implements JdbcInterface {
    @Override
    public Object getConnecttion() {
        System.out.println("得到mysql的连接");
        return null;
    }

    @Override
    public void crud() {
        System.out.println("进行mysql的增删改查");
    }

    @Override
    public void close() {
        System.out.println("关闭mysql的连接");
    }
}

模拟Oracle厂商实现对接口实现类的定义

package com.hsp.edu;
//模拟Oracle公司实现java定义的接口
public class OracleImplement implements JdbcInterface {
    @Override
    //连接Oracle数据库
    public Object getConnecttion() {
        System.out.println("连接Oracle数据库");
        return null;
    }

    @Override
    //完成增删改查
    public void crud() {
        System.out.println("完成对Oracle的增删改查");
    }

    @Override
    public void close() {
        System.out.println("关闭Oracle的连接");
    }
}

测试类

package com.hsp.edu;

public class JdbcTest {
    public static void main(String[] args) {
     JdbcInterface jdbcInterface=  new OracleImplement();//通过接口来调用实现类(动态绑定)
    //完成对mysql的操作
        jdbcInterface.getConnecttion();//连接数据库
        jdbcInterface.crud();//完成增删改查操作
        jdbcInterface.close();//关闭数据库的连接

    }
}

  • 首先我们使用mysql的实现类来作为接口的测试类
  • 通过接口来调用mysql厂商实现运用mysql的方法

    此时我们通过改变接口的实现类对象来调用Oracle数据库

从上面我们可以发现此时java实现对不同数据库的调用只需要改变接口的实现类即可。从而简化了编程

  • 假设直接使用java去操作数据库
  • 1.调用的方法不统一
  • 2.假如数据库升级,将可能会连接失败。将连接操作交给各个数据库厂商,我们只用更换jar包即可

我们以后学就只用去学,接口里面有那些方法,类里面有那些方法。怎样去使用更规范

总结

不可取,太暴力

  • JDBC API主要存在于下面的包中

标签:JDBC,java,数据库,接口,连接,概述,mysql,原理,public
From: https://www.cnblogs.com/swtaa/p/17349497.html

相关文章

  • 逻辑回归原理总结
    概述在线性回归模型中,拟合函数$h(x)$输出一组连续型标签值。当标签是离散型变量,或者说想做分类任务,可通过引入联系函数(linkfunction),得到一个“广义线性模型”实现分类。本文主要介绍比较常见的二分类模型。对于二分类模型,Sigmoid函数正是这样一个联系函数:$y=\frac{1}{1+e^{-h......
  • 【深入浅出Spring原理及实战】「源码调试分析」深入源码探索Spring底层框架的的refres
    学习Spring源码的建议阅读Spring官方文档,了解Spring框架的基本概念和使用方法。下载Spring源码,可以从官网或者GitHub上获取。阅读Spring源码的入口类,了解Spring框架的启动过程和核心组件的加载顺序。阅读Spring源码中的注释和文档,了解每个类和方法的作用和用法。调试Spring源码,可以......
  • vue2源码-十三、nextTick在哪里使用?原理是什么?
    nextTick在哪里使用?原理是什么?nextTick内部采用了异步任务进行包装(多个nextTick调用会被合并成一次,内部会合并回调)最后在异步任务中批处理。主要应用场景就是异步更新(默认调度的时候就会添加一个·nextTick任务)用户为了获取最终的渲染结果需要在内部任务执行之后再执行用户逻......
  • MySQL-mysqldump原理
    mysqldump原理解析mysqldump命令执行和输出mysqldump--no-defaults-hlocalhost-uroot-p12345678-P3306--databaseseo_oslog--tablest1--single-transaction--master-data=2--set-gtid-purged=OFF>t1.sql日志输出2023-04-23T03:42:18.124438Z2Connect......
  • No suitable driver found for jdbc[转]
    一是:连接URL格式出现了问题(Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX")二是:驱动字符串出错(com.mysql.jdbc.Driver)三是Classpath中没有加入合适的mysql_jdbc驱动经过我的仔细检查,这三种错误我......
  • 做网站的一些定律 原理和效应汇总(26条)
    做网站的一些定律原理和效应汇总(26条)做网站符合人类发现的些许定律和原理,也体现了一些著名的效应,请看:1.250定律拉德认为:每一位顾客身后,大体有250名亲朋好友。如果您赢得了一位顾客的好感,就意味着赢得了250个人的好感;反之,如果你得罪了一名顾客,也就意味......
  • 16张动图讲透网络原理,可真是个人才
    晚上好,我是老杨。今天这篇文章来自于小白粉丝的分享,我一看,这内容不错,务必也要众乐乐一下。网络相关的技术解读,我在文章里讲过了很多次,换着花样解读的那种。如果你想看,推荐你阅读以下这几篇:《别再要这张网工技能图谱了,老杨就发这一遍 》《这份高清版TCP/IP全景图,网络工程师人手一份......
  • redis,持久化RDB,AOF,混合(AOF),主从复制原理和方案,哨兵高可用
    内容回顾#悲观乐观锁: django中如何实现 -悲观锁:mysql行锁表锁-乐观锁:真正修改时,加入限制条件django中事务如何开启 -原生sql如何开启事务:begin;commit; -django中如何开事务:atomic()commit()for_update是锁表还是锁行如果查......
  • EtherCAT协议概述
    一EtherCAT简介EtherCAT(EtherNetControlAutomationTechnology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(Et......
  • 浅析python中装饰器原理
    一、什么叫装饰器?装饰器(decorator)的本质是一个函数,它接收一个函数作为参数,并返回一个被装饰过后的函数二、装饰器的作用?在不修改被修饰过函数的代码和和调用方式的情况下,给被装饰函数增加额外的功能三、装饰器的应用场景?插入日志、性能测试、事务处理、缓存、权限校验等场景......