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包

        现在下面就有东西了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20079.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm打开的jupyter notebook无法在pycharm中关闭怎么解决

首先你可以先看一下你的pycharm的jupyter界面的输出: 可以看到第一行有个启动命令 找到这个–port的端口号,现在我们可以走下面的步骤,假设你找到的是–port47187 : 步骤 1:定位占用端口的进程(Linux/Mac…

电磁铁的磁芯材质

电磁铁的磁芯通常采用软铁材质,因其具有高磁导率和低矫顽力,使得电磁铁能够在通电时迅速产生强磁场,断电后磁场又能迅速消失。 一、电磁铁与磁芯材质 电磁铁是一种利用电流产生磁场的装置。其核心部件——磁芯,对电磁铁的性能有着…

网络安全等级保护测评(等保测评):全面指南与准备要点

等保测评,全称为“网络安全等级保护测评”,是根据《网络安全法》及《网络安全等级保护条例》等法律法规,对信息系统进行安全等级划分,并依据不同等级的安全保护要求,采用科学方法和技术手段,全面评估信息系…

24蓝桥省赛B-数字接龙

#include<bits/stdc.h> using namespace std; const int N13; int mp[N][N],flag,n,k; bool vis[N][N]; int f[N][N][N][N];//存储路径,用于判断是否斜着走,是本题剪枝的难点 vector<int>ans; vector<int>res; int dx[]{-1,-1,0,1,1,1,0,-1}; int dy[]{0,1,1…

基于豆瓣2025电影数据可视化分析系统的设计与实现

✔️本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示&#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据&#xff0c;我们提供了一个全面的电影信息平台&#xff0c;为用户提供深入了解电影产业趋势、影片评价与演员表现的工…

React实现自动滚动表格

在 React 中实现一个自动滚动的表格&#xff0c;可以通过 CSS 动画和 JavaScript 定时器来实现。以下是一个完整的示例代码&#xff0c;包含示例数据和自动滚动功能。 实现思路&#xff1a; ** 自动滚动&#xff1a;** 使用 setInterval 实现表格的自动滚动。 手动滚动&…

2024年GESP09月认证Scratch一级试卷

2024年GESP09月认证Scratch一级试卷分数&#xff1a;100 题数&#xff1a;17 一、单选题(共10题&#xff0c;每题3分&#xff0c;共30分) 01020304050607080910AACBCABCDD 1、据有关资料&#xff0c;山东大学于1972年研制成功DJL-1计算机&#xff0c;并于1973年投入运行&…

Qt常用控件之按钮QPushButton

按钮QPushButton QPushButton 在 Qt 中用于表示一个按钮控件&#xff0c;它继承自抽象 QAbstractButton 类。 QPushButton属性 属性说明text按钮中的文本。icon按钮中的图标。iconSize按钮中图标的大小。shortCut按钮对应的快捷键。autoRepeat按钮是否会重复触发&#xff08…

【PHP】php+mysql 活动信息管理系统(源码+论文+数据库+数据库文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【PHP】php 活动信息管理系统&#xff08;源码论文…

搭建一个 Spring Boot 项目,解决jdk与springboot版本不匹配

搭建一个 Spring Boot 项目 方式一&#xff1a;使用 Spring Initializr Spring Initializr 是一个基于 Web 的工具&#xff0c;用于快速生成 Spring Boot 项目的基础结构。 访问 Spring Initializr 网站&#xff1a;https://start.spring.io/配置项目信息&#xff1a; …

基于SpringBoot的小区运动中心预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

WPF快速创建DeepSeek本地自己的客户端-基础思路版本

开发工具&#xff1a;VS 2015 开发环境&#xff1a;.Net 4.0 使用技术&#xff1a;WPF 本篇文章内容&#xff1a; 本地部署DeepSeek以后一般使用网页工具&#xff08;如Chatbox&#xff09;或者DOS窗口与其对话。本篇文章使用WPF创建一个基础版的对话工具。 一、搭建本地DeepS…

【怎么使用Redis实现一个延时队列?】

怎么使用Redis实现一个延时队列? 详细说明Java代码示例解释注意事项使用Redis实现延时队列通常通过有序集合(Sorted Set)来实现,利用Redis的ZSET类型及其相关命令可以很方便地实现这一功能。 有序集合中的每个元素都有一个分数(score),我们可以利用这个分数来存储消息需…

Blackbox.AI:高效智能的生产力工具新选择

前言 在当今数字化时代&#xff0c;一款高效、智能且功能全面的工具对于开发者、设计师以及全栈工程师来说至关重要。Blackbox.AI凭借其独特的产品特点&#xff0c;在众多生产力工具中脱颖而出&#xff0c;成为了我近期测评的焦点。以下是我对Blackbox.AI的详细测评&#xff0…

第2章 信息技术发展(一)

2.1 信息技术及其发展 2.1.1 计算机软硬件 计算机硬件(Computer Hardware)是指计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称。 计算机软件 (Computer Software)是指计算机系统中的程序及其文档&#xff0c;程序是计算任务的处理对象和处理规则的描述; 文档…

AI工作流

AI 工作流 是什么&#xff1f; AI 工作流 是一种利用人工智能技术设计的一系列任务或步骤序列&#xff0c;用于完成特定目标的过程。它将一系列AI相关的操作整合在一起&#xff0c;形成一个高效的、结构化的流程&#xff0c;从而实现预定的目标。 AI 工作流 的组成部分 目标定…

用deepseek学大模型08-卷积神经网络(CNN)

yuanbao.tencent.com 从入门到精通卷积神经网络(CNN),着重介绍的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c;预测结果的可视化展示&#xff0c; 模型应用场景和优缺点&#xf…

数据库加密全解析:从传输到存储的安全实践

title: 数据库加密全解析:从传输到存储的安全实践 date: 2025/2/17 updated: 2025/2/17 author: cmdragon excerpt: 数据加密是数据库安全的最后一道物理防线。传输层SSL/TLS配置、存储加密技术及加密函数实战应用,覆盖MySQL、PostgreSQL、Oracle等主流数据库的20+生产级加密…

以太网详解(八)传输层协议:TCP/UDP 协议

文章目录 传输层协议概述为什么需要传输层&#xff1f;传输层功能网络层与传输层在实现 “端到端” 传输的异同两类服务:面向连接/无连接服务 传输控制协议 TCPTCP 协议数据单元格式TCP 的重传机制快重传和快恢复快重传举例快恢复算法 用户数据报协议 UDPUDP 概述UDP 基本工作过…

贪吃蛇游戏

贪吃蛇 一、html <div class"container" id"app"></div><script src"./js/index.js"></script>二、css * {margin: 0;top: 0;} .set {margin: 15px auto;width: 600px; } .container {width: 600px;height: 600px;bac…