当前位置: 首页 > news >正文

JavaEE -JDBC池化思想 与 IDEA导包

1.JDBC概述

1.JDBC 的概述
        * Java DataBase Connectivity Java数据库的连接。
        * 目的使用 Java 的代码来操作数据库
        * 需要使用 JDBC Java 数据库的连接)规范来操作数据。
2.JDBC 的规范
        * JDBC是一套接口规范
        * JDBC的实现类都是由各个数据库的生产商来提供的。
        * 只要学会了 JDBC 的接口和方法,就可以了。
3. 驱动
        * 数据传输的桥梁
        * 驱动指的是各个数据库生产商提供的实现类
        * 需要来使用实现类,需要导入 MySQL 提交的驱动的 jar 包(千万不能忘记)
        * 需要导入 mysql‐connector‐java‐5.1.13‐bin.jar

JDBC是连接数据库,操作数据库的工具。

是接口的规范。

JDBC七个步骤:

加载驱动,获取连接,创建statement对象执行sql,resultstatement,关闭RS,关闭statement对象,关闭连接释放资源

开发的步骤
        * 加载驱动使用 DriverManager
        * 获取连接,返回 Connection 接口,说明连接上数据库的服务器
        * 执行 SQL 语句
                * 编写SQL 语句
                * 获取能执行SQL 语句的对象( Statement 接口)
        * 如果执行的查询的语句,返回的结果,封装 ResultSet 接口中,遍历该接口
        * 释放资源(调用 close() 方法)

 

减少创建连接的时间

常用mysql的版本:5.6  ,5.7  ,8.0的。

5.6,5.7用的是

这个jar包。

2.步骤引入

1.加载驱动 

加载驱动的方式有两种

1.

DriverManager.registerDriver(new Driver());

        DriverManager这个类是因为导了

驱动jar包,

        这个类点这个方法,说明这个方法是静态方法

        传递的是一个驱动类

        这一行之后能够去获取连接了。

2.

反射的方式

Class.forName("com.mysql.jdbc.Driver");

2. 获取连接

conn = DriverManager.getConnection("jdbc:mysql:///jdbcdemo", "root", "root");

getConnection获取连接

获取连接

        * static Connection getConnection(String url, String user, String password)

                * 参数有3个

                        * 第一个参数:jdbc:mysql://localhost:3306/day07(背下来)

                                * jdbc ‐‐ 代表的主协议

                                * mysql ‐‐ 子协议(有可能变化的)

                                * localhost ‐‐ 主机

                                * 3306 ‐‐ 默认的端口号

                                * day07 ‐‐ 数据库

                        * 如果访问的是本地的自己的数据库,那么localhost:3306就可以省略不写

                                * mysql的命令 ‐uroot ‐proot

                                * JDBC简写:jdbc:mysql:///day07

                        * 第二个参数:root(用户名)

                        * 第三个参数:root(密码)

statement对象有两个:

createStatement()和prepareStatement()

        这两个的区别:createStatement不能解决sql注入问题,不安全。prepareStatement能解决sql注入问题,安全


        每次都需要执行那七步,加载驱动..关闭连接。

于是就需要抽取出来一个工具类,

3.工具类:

加载驱动,获取连接 

        properties文件里都是key-value类型的数据,通过反射机制获取db.properties文件信息,通过给key赋值,加载这个流。

        这段代码的意义,当通过类点的时候,就先执行这些代码,拿到这些参数

        反射的方式去加载驱动,就替换了

DriverManager.registerDriver(new Driver());

这行代码

看起来没少,但是

        直接调用方法即可。

关闭资源:

        查询操作才会有结果集,所以工具类分为两个关闭方法。

        重载。

        工具类获取出来了,但是每一次去获取连接,都会走工具类去加载,每一次都要加载、销毁连接。

        创建和销毁需要消耗时间成本--->数据库连接池,池化思想。把所有东西准备出来,公共使用。--共享单车

        数据库连接池用的最多的,就是druid的阿里巴巴提供的连接池。

导jar包,

下面这些参数是连接池参数

        .连接池(池参数,如果不指定,有默认值)

                * 初始大小:10个  initialSize

                * 最小空闲连接数:3个  minIdle

                * 增量:一次创建的最小单位(5个)   maxOpenPreparedStatements

                * 最大空闲连接数:12个   maxIdle

                * 最大连接数:20个   maxActive

                * 最大的等待时间:1000毫秒  maxWait

        以后加载驱动由DATA_SOURCE提供,DATA_SOURCE是一个接口,接口就要有具体的实现。

        此次拿到的连接是从连接池里拿到的,这个工厂去加载的时候这个连接已经加载好了,里面有多少个链接,

        这里声明好了,这里是5,说明如果有5个人来获取连接,就不需要产生连接的时间(一开始加载的时候,连接池加载5个),第六个人来的时候,如果前五个人没有人还回来,就要有创建连接的时间,就会去增长。以什么样的倍数去增长,这里设定好了。

        有个最大等待时间,这里是3000毫秒,也就是第六个人来的时候等待3000毫秒,如果3000毫秒内那五个人没有人还,就会马上创建新的连接。

        会有一个最大连接数

        还有一个最大闲时连接数,在火车站上买票,人多的时候会有很多售票员,人少的时候就会有一两个值班人员,减少开支

关闭资源:

        原先是销毁,原来是通过DriverMAnager获取的连接,这里是通过连接池获取的连接,对关闭资源方法重写,按照自己的逻辑执行,把链接归还到连接池。

 总结!!    

        连接池作用:减少了创建连接和销毁链接的时间。

3. 导包

        IDEA里拖进来,不代表应用上了。想要应用上需要添加配置。

        选择到项目下的jar包

        现在下面就有东西了。

相关文章:

  • 【JavaScript】正则表达式综合案例
  • uniapp 支付宝小程序自定义顶部导航栏
  • Fiddler笔记
  • 高考或者单招考试需要考物理这科目
  • 基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码+数据库+文档+PPT)
  • 使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频
  • Breakout Tool
  • 2025年网络安全(黑客技术)三个月自学手册
  • MAVEN学习
  • A与B组件自动对齐与组装,无映射直接补偿。
  • python绘图之箱型图
  • 测试使用Cursor中的deepseek-V3大模型辅助开发一个小程序
  • 文档生成视频转换工具,让一切皆可制作成视频
  • Unity 打开摄像头 并显示在UI
  • 防御保护实验三---前七章综合练习
  • labelimg的xml文件转labelme的json文件
  • 【DeepSeek-R1】满血版免费网页端使用(不卡顿,支持联网搜索)
  • 前端工程化的具体实现细节
  • 【从字节码的角度看switch-case】
  • spring boot知识点2
  • AI含量非常高,2025上海教育博览会将于本周五开幕
  • 上海杨浦:鼓励龙头企业与高校共建创新联合体,最高支持200万元
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 回望乡土:对媒介化社会的反思
  • 王毅会见巴西外长维埃拉、总统首席特别顾问阿莫林
  • 美英贸易协议|不,这不是一份重大贸易协议