Java操作数据库连接池案例讲解

数据库连接池

概念:其实就是一个容器(集合),存放数据库连接的容器。

  1. 概念:其实就是一个容器(集合),存放数据库连接的容器。
    当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
  2. 好处:
    1. 节约资源
    2. 用户访问高效
  3. 实现:
    1. 标准接口:DataSource javax.sql包下的

      1. 方法:

        • 获取连接:getConnection()
        • 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接
    2. 一般我们不去实现它,有数据库厂商来实现
      1. C3P0:数据库连接池技术
      2. Druid:数据库连接池实现技术,由阿里巴巴提供的

Druid:数据库连接池实现技术,由阿里巴巴提供的
1. 步骤:
1. 导入jar包 druid-1.0.9.jar
2. 定义配置文件:
* 是properties形式的
* 可以叫任意名称,可以放在任意目录下
3. 加载配置文件。Properties
4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
5. 获取连接:getConnection

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

public class MyJdbc13{
	public static void main(String[] args)throws Exception {
		//Hashtable的子类
		Properties properties = new Properties();
		InputStream inStream = new FileInputStream("src/druid.properties");
		properties.load(inStream);

		//数据库连接池
	 DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
		Connection conn = dataSource.getConnection();
		//将该conn对象交还给连接池
		conn.close();
	}

}

到此这篇关于Java操作数据库连接池案例讲解的文章就介绍到这了,更多相关Java操作数据库连接池内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中几种常用数据库连接池的使用

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.如下图所示: 二.使用数据库连接池优化程序性能 2.1.数据库连接池的基本概念 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性

  • Java 模拟数据库连接池的实现代码

    前面学习过等待 - 通知机制,现在我们在其基础上添加一个超时机制,模拟从连接池中获取.使用和释放连接的过程.客户端获取连接的过程被设定为等待超时模式,即如果在 1000 毫秒内无法获取到可用连接,将会返回给客户端一个 null.设定连接池的大小为 10 个,然后通过调节客户端的线程数来模拟无法获取连接的场景 由于 java.sql.Connection 只是一个接口,最终实现是由数据库驱动提供方来实现,考虑到本例只是演示,我们通过动态代理构造一个 Connection,该 Connection

  • Java数据库连接池技术的入门教程

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个: 数据库连接池技术 基本概念: 数据库连接池:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器. 使用池化技术的好处: 1. 节约资源 2. 用户访问

  • 详解Java数据库连接池

    一.什么是数据库连接池 就是一个容器持有多个数据库连接,当程序需要操作数据库的时候直接从池中取出连接,使用完之后再还回去,和线程池一个道理. 二.为什么需要连接池,好处是什么? 1.节省资源,如果每次访问数据库都创建新的连接,创建和销毁都浪费系统资源 2.响应性更好,省去了创建的时间,响应性更好. 3.统一管理数据库连接,避免因为业务的膨胀导致数据库连接的无限增多. 4.便于监控. 三.都有哪些连接池方案 数据库连接池的方案有不少,我接触过的连接池方案有: 1.C3p0 这个连接池我很久之前看到

  • Java数据库连接池c3p0过程解析

    首先下载c3p0的jar包 https://mvnrepository.com/search?q=c3p0 导入jar包到eclipse 将c3p0的jar包放到eclipse中,单击右键,选择build path ,在选择 add jars 创建连接池对象 ComboPooledDataSource cpd= new ComboPooledDataSource(); 设置连接参数 方法一 使用静态代码块来初始化参数(不推荐)如果数据库发生改变,源文件需要重新编写编译,项目需要重新部署 stat

  • java数据库连接池新手入门一篇就够了,太简单了!

    1.什么是数据库连接池 就是一个容器持有多个数据库连接,当程序需要操作数据库的时候直接从池中取出连接,使用完之后再还回去,和线程池一个道理. 2.为什么需要连接池,好处是什么? 1.节省资源,如果每次访问数据库都创建新的连接,创建和销毁都浪费系统资源 2.响应性更好,省去了创建的时间,响应性更好. 3.统一管理数据库连接,避免因为业务的膨胀导致数据库连接的无限增多. 4.便于监控. 3.都有哪些连接池方案 数据库连接池的方案有不少,我接触过的连接池方案有: 1.C3p0 这个连接池我很久之前看到

  • Java数据库连接池连接Oracle过程详解

    第一步:导入tomcat\lib 下的一个tomcat-dbcp.jar包 第二步:在web\META-INF下新建一个context.xml文件,文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/lwl" auth="Container" type="javax.sql.DataS

  • 浅谈常用Java数据库连接池(小结)

    概述 在这里所谓的数据库连接是指通过网络协议与数据库服务之间建立的TCP连接.通常,与数据库服务进行通信的网络协议无需由应用程序本身实现,原因有三: 1.实现复杂度大,需要充分理解和掌握相应的通信协议. 2.代码难以复用,每个应用程序都需要独立实现一套对应的网络协议(不同公司之间,同一公司的不同技术栈之间难以复用实现相同协议的代码) 3.性能难以保证,不同的网络协议实现可能存在巨大的性能差距 正因为如此,所以现实的实现方式是: 首先,定义网络协议标准,这样只要支持这个标准协议的数据库就可以使用相

  • Java操作数据库连接池案例讲解

    数据库连接池 概念:其实就是一个容器(集合),存放数据库连接的容器. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器. 好处: 节约资源 用户访问高效 实现: 标准接口:DataSource javax.sql包下的 方法: 获取连接:getConnection() 归还连接:Connection.close().如果连接对象Connection是从

  • Java之类加载机制案例讲解

    1.类加载 <1>.父子类执行的顺序 1.父类的静态变量和静态代码块(书写顺序) 2.子类的静态变量和静态代码块(书写顺序) 3.父类的实例代码块(书写顺序) 4.父类的成员变量和构造方法 5.子类的实例代码块 6.子类的成员变量和构造方法 <2>类加载的时机 如果类没有进行初始化,则需要先进行初始化,虚拟机规范则是严格规定有且只有5种情况必须先对类进行初始化(而加载,验证,准备要在这个之前开始) 1.创建类的实例(new的方式),访问某个类的静态变量,或者对该静态变量赋值,调用类

  • Java之网络编程案例讲解

    Java基础之网络编程 基本概念 IP:每个电脑都有一个IP地址,在局域网内IP地址是可变的. 网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信.这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格 式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换. TCP协议(传输控制协议):是面向连接的传输层协议,应用程序在使用TCP之前,必须先建立TCP连接,在传输数据完毕后,必须释放已经建立的连接(跟打电话是否类似).

  • Java之springcloud Sentinel案例讲解

    一.Sentinel是什么? Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案. 它以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来保护服务的稳定性. 二.使用步骤 1.下载地址 下载地址:https://github.com/alibaba/Sentinel/releases java -jar sentinel-dashboard-1.7.0.jar 访问:http://localhost:8080 用户名密码:sentinel/sen

  • Java实现数据库连接池的方法

    本文实例讲述了Java实现数据库连接池的方法.分享给大家供大家参考.具体如下: package com.kyo.connection; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import j

  • java操作elasticsearch的案例解析

    这篇文章主要介绍了java操作elasticsearch的案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 到目前为止,我们一直都是使用RESTful风格的 API操作elasticsearch服务,但是通过我们之前的学习知道,elasticsearch提供了很多语言的客户端用于操作elasticsearch服务,例如:java.python..net.JavaScript.PHP等.而我们此次就学习如何使用java语言来操作elasti

  • Java面向对象之内部类案例讲解

    1. 内部类 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了 1.1 内部类概述 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了. 内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类. 我可以把外边的类称为外部类,在其内部编写的类称为内部类. 内部类分为四种: 成员内部类 静态内部类 局部内部类 匿名内部类 1.2 成员内部类(

  • Java之SpringBoot定时任务案例讲解

    1. SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spring为我们提供了异步执行任务调度的方式,提供了 两个接口和两个注解,并且用corn表达式去定时. TaskScheduler //任务调度程序 TaskExecutor //任务执行者 @EnableScheduling //开启定时功能的注解,放在主入口 @Scheduled //什么时候执行 cron表达式 1.1 编写定时任务的方法 我们里面存在一

  • Java实现数据库连接池简易教程

    一.引言 池化技术在Java中应用的很广泛,简而论之,使用对象池存储某个实例数受限制的实例,开发者从对象池中获取实例,使用完之后再换回对象池,从而在一定程度上减少了系统频繁创建对象销毁对象的开销.Java线程池和数据库连接池就是典型的应用,但并非所有的对象都适合拿来池化,对于创建开销比较小的对象拿来池化反而会影响性能,因为维护对象池也需要一定的资源开销,对于创建开销较大,又频繁创建使用的对象,采用池化技术会极大提高性能. 业界有很多成熟的数据库连接池,比如C3P0,DBCP,Proxool以及阿

随机推荐