數據庫連接池

1.爲什麼要有數據庫連接池

數據庫連接池的基本思想就是爲數據庫連接建立一個“緩衝池”。預先在緩衝池中放入一定數量的連接,當需要建立數據庫連接時,只需從“緩衝池”中取出一個,使用完畢之後再放回去。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重複使用一個現有的數據庫連接,而不是重新建立一個。

2.數據庫連接池原理


3.兩種開源的數據庫連接池

1)JDBC 的數據庫連接池使用 javax.sql.DataSource 來表示,DataSource 只是一個接口,該接口通常由服務器(Weblogic, WebSphere, Tomcat)提供實現,也有一些開源組織提供實現:DBCP 數據庫連接池;C3P0 數據庫連接池。

2)DataSource 通常被稱爲數據源,它包含連接池和連接池管理兩個部分,習慣上也經常把 DataSource 稱爲連接池

4.DBCP(database connection pool)

1)BasicDataSource

	/**
	 * 如何使用DBCP? 
	 * 1. 加入DBCP 的 jar 包(兩個:dbcp和pool) 
	 * 2. 創建數據庫連接池 
	 * 3. 從數據庫連接池中獲取數據庫連接
	 * 
	 * @throws SQLException
	 */
	@Test
	public void testBasicDS() throws SQLException {
		// 1.創建DataSource對象
		BasicDataSource dataSource = new BasicDataSource();
		
		// 2.設置數據庫連接的參數:用戶名、密碼、數據庫全類名、數據庫連接地址
		dataSource.setUsername("root");
		dataSource.setPassword("123456");
		dataSource.setUrl("jdbc:mysql:///zhaoliang");
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		
		// 3.指定數據源的一些可選屬性
		//1)指定數據庫連接池初始化的連接個數
		dataSource.setInitialSize(10);
		//2)指定最大連接數:同一時刻向數據庫申請的連接數
		dataSource.setMaxActive(20);
		//3)指定最小空閒連接數:在連接池中保存的最小的空閒連接數
		dataSource.setMinIdle(5);
		//4)指定等待數據庫連接池分配連接的最長時間,單位爲毫秒,超出等待時間將拋出異常
		dataSource.setMaxWait(5000);
		
		// 4.從數據源中獲取數據庫連接
		Connection connection = dataSource.getConnection();
		System.out.println(connection);
	}
2)BasicDataSourceFactory

	@Test
	public void testBasicDSFactory() throws Exception {
		Properties properties = new Properties();
		InputStream inStream = this.getClass().getClassLoader()
				.getResourceAsStream("jdbc.properties");
		properties.load(inStream);
		DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
		
		Connection connection = null;
		try {
			connection = dataSource.getConnection();
			System.out.println(connection);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if(connection != null){
					connection.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章