亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫連接池

發布時間:2020-06-30 12:30:08 來源:網絡 閱讀:304 作者:艾弗森哇 欄目:MySQL數據庫

連接池是管理數據庫連接的一種機制,能夠控制連接的個數,默認情況下可以預先創建可用的連接。


有四種常見的連接池框架


1、Apache的DBCP連接池(Tomcat內置了DBCP)


2、C3P0連接池


3、proxcool連接池


4、阿里公司的德魯伊框架。


一、引入Maven(只記錄了DBCP和C3P0的使用)


? ? <dependency>

? ? <groupId>mysql</groupId>

? ? <artifactId>mysql-connector-java</artifactId>

? ? <version>8.0.16</version>

</dependency>

?

? ? <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->

<dependency>

? ? <groupId>com.mchange</groupId>

? ? <artifactId>c3p0</artifactId>

? ? <version>0.9.5.4</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->

<dependency>

? ? <groupId>org.apache.commons</groupId>

? ? <artifactId>commons-dbcp2</artifactId>

? ? <version>2.6.0</version>

</dependency>

二、創建連接池,DataSource有提供getConnection接口。這里采用工廠模式獲取數據庫連接池的連接。


package com.neusoft.busmis.fatory;

?

import java.sql.Connection;

?

import javax.sql.DataSource;

?

import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;

//DBCP連接池

public class ConnectionFactoryWithDBCP {

private static DataSource ds = null;

static {

BasicDataSource bds = new BasicDataSource();

bds.setDriverClassName("com.mysql.jdbc.Driver");

bds.setUrl("jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8");

bds.setUsername("root");

bds.setPassword("123456");

bds.setInitialSize(1); //設置初始的連接個數

bds.setMaxTotal(2); //設置最大連接數

bds.setMaxIdle(2);

bds.setMaxWaitMillis(2000); //設置等待時間

ds = bds;

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

}

package com.neusoft.busmis.fatory;

?

import java.sql.Connection;

?

import javax.sql.DataSource;

?

import com.mchange.v2.c3p0.ComboPooledDataSource;

?

public class ConnectionFactoryWithC3P0 {

private static DataSource ds = null;

static {

ComboPooledDataSource cpds = new ComboPooledDataSource();

try {

cpds.setDriverClass("com.mysql.jdbc.Driver");

cpds.setJdbcUrl("jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8");

cpds.setUser("root");

cpds.setPassword("123456");

cpds.setMinPoolSize(1); //設置最小的連接個數

cpds.setAcquireIncrement(1);//每次新增的連接個數

cpds.setMaxPoolSize(10);//設置最大的連接個數

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ds = cpds;

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

public static DataSource getDataSource() throws Exception{

return ds;

}

}

三、將連接池放到JNDI


因為在java的機制,如果太久沒使用一個引用,就會自動清除,不能避免地有時候會重復地進行銷毀、創建的動作。所以將連接池配置放在JNDI上,讓它在服務器啟動時就一直存在。


在tomcat的context.xml里配置數據庫信息。


<Resource? name="mysql3306busmis-dbcp"? ?

auth="Container"??

type="javax.sql.DataSource"

factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"

maxActive="5"

maxIdle="3"

maxWait="100"

username="root"

password="root"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8" />??

?http://www.renrendoc.com/p-21933469.html

?鄭州不孕不育醫院:http://www.zzchyy110.com/

<Resource name="mysql3306busmis-c3p0" auth="Container"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

factory="org.apache.naming.factory.BeanFactory"

driverClass="com.mysql.jdbc.Driver"

jdbcUrl="jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8"

user="root"

password="root"

minPoolSize="1"

maxPoolSize="4"

maxIdleTime="1800"

acquireIncrement="1"

maxStatements="0"

initialPoolSize="1"

idleConnectionTestPeriod="60"

acquireRetryAttempts="30"

acquireRetryDelay="1000"

testConnectionOnCheckin="false"

breakAfterAcquireFailure="false"

testConnectionOnCheckout="false"/>

DBCP最主要的是drivereClassName(數據庫驅動)、url(數據庫地址)、username(數據庫用戶名)、password(數據庫驅動)、name(Resource的名字)、maxIdle(最大空閑數)、maxActive(最大活動數)、auth(連接池的管理者,Container表示交給Tomcat管理)、maxWait(最大等待時間ms)、type(DataSource類)。


注:如果使用JNDI方式,必須將項目發布到Web才能生效。


工廠模式創建連接,用Context類的lookup來找配置信息,java:/comp/env/name。


package com.neusoft.busmis.fatory;

?

import java.sql.Connection;

?

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

?

public class ConnectionFactoryWithJNDI {

private static DataSource ds = null;

static {

try {

Context ct = new InitialContext();

ds = (DataSource)ct.lookup("java:/comp/env/mysql3306busmis-c3p0");

ct.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

}

?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青州市| 舒兰市| 宝兴县| 枣庄市| 汽车| 泾源县| 岱山县| 阳曲县| 双牌县| 江华| 元氏县| 信丰县| 柘荣县| 江油市| 清远市| 新郑市| 武义县| 新竹县| 邻水| 民县| 新沂市| 柞水县| 揭西县| 盘锦市| 德钦县| 上虞市| 宁夏| 巴青县| 莱芜市| 清涧县| 丽水市| 咸丰县| 黎平县| 中西区| 梅河口市| 遂昌县| 南通市| 桓台县| 密山市| 壶关县| 横山县|