java+web+数据源_javaweb高级 第六章 连接池与数据源

1.本章目标

了解连接池

掌握JNDI.DBCP链接池的使用

2.连接池

理解为一个带有多个连接的池子

比如:

连接池最小连接数:10,也就是该连接池初始化时有10个可用的连接

连接池有最大连接数:100,表示该连接池最大上限100个连接

当有请求连接数据库时,先判断10个连接是否有空闲.

若有,就直接分配一个链接.

若没有(10不够)就在小于最大连接数的前提下打开一个新的连接

若已经有100个连接都在使用,后面的请求会等待前面使用完成后释放连接,在使用

3.JDNI

java naming and directory interface: java命名和目录接口.顾名思义就是提供java的名称和目录方面的操作

用途:

连接对象,连接jdbc资源,简介jms资源,连接javamail资源

tomcat实现jndi提供一种连接池技术(不常用)

步骤:

1.将连接数据库的驱动jar包拷贝到tomcat/lib目录

2.tomcat/conf/context.xml中配置数据源(数据的来源,通常指数据库,数据源中存放了建立数据库连接的信息)

auth="Container"          //资源管理者

type="javax.sql.DataSource"     //资源所属的类型

initialSize="1"           //初始化连接数

maxActive="10"            //最大连接数

minIdle="0"             //最小空闲数,0,不受限

maxIdle="0"             //最大空闲数,0,不受限

maxWait="5000"           //最大等待时间

username="root" password="123456" url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF8" driverClassName="com.mysql.jdbc.Driver"

>

3.在web.xml中配置数据源引用

jndiResource

javax.sql.DataSource

Container

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

private static DataSource ds = null; //数据源

/*** 获取一个连接对象

*@return返回一个连接对象*/

public staticConnection getConnection() {

Connection conn= null;try{if(ds == null){//上下文

Context context = newInitialContext();//从上下文对象中获取数据源 jndiResource:数据源名称

ds = (DataSource) context.lookup("java:comp/env/jndiResource");

}//从数据源中获取连接对象

conn =ds.getConnection();

}catch(Exception e) {

e.printStackTrace();

}returnconn;

}

java连接数据库代码

注意:关闭数据库 不是关闭  而是//将连接对象放入连接池中

0、DBCP简介

DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的。

1、DBCP所依赖的jar包(以下例子基于如下jar包版本)

commons-dbcp2-2.1.1.jar       commons-logging-1.2.jar       commons-pool2-2.4.2.jar

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#初始化连接数

dbcp.initialSize=1dbcp.maxTotal=10dbcp.maxIdle=0dbcp.minIdle=0dbcp.maxWaitMillis=1dbcp.username=root

dbcp.password=123456dbcp.driverClassName=com.mysql.jdbc.Driver

dbcp.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8

dbcp.properties

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

private static DataSource ds = null; //数据源

/*** 获取一个连接对象

*@return返回一个连接对象*/

public staticConnection getConnection() {

Connection conn= null;//单例(在容器中只有一个对象,线程非安全)和多例(容器中有多个相同类型的对象,线程安全)

try{if(ds==null){

ds=getDataSourcer();

}

conn=ds.getConnection();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}returnconn;

}public staticDataSource getDataSourcer(){

BasicDataSource bds=newBasicDataSource();

ResourceBundle bundle=ResourceBundle.getBundle("dbcp");

bds.setInitialSize(Integer.parseInt(bundle.getString("dbcp.initialSize")));

bds.setMaxTotal(Integer.parseInt(bundle.getString("dbcp.maxTotal")));

bds.setMaxIdle(Integer.parseInt(bundle.getString("dbcp.maxIdle")));

bds.setMinIdle(Integer.parseInt(bundle.getString("dbcp.minIdle")));

bds.setMaxWaitMillis(Integer.parseInt(bundle.getString("dbcp.maxWaitMillis")));

bds.setUsername(bundle.getString("dbcp.username"));

bds.setPassword(bundle.getString("dbcp.password"));

bds.setDriverClassName(bundle.getString("dbcp.driverClassName"));

bds.setUrl(bundle.getString("dbcp.url"));returnbds;

}

dbcp连接数据库java代码

直接拿来用!!

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值