lDataSource用來取代DriverManager來獲取Connection; l通過DataSource獲得Connection速度很快; l通過DataSource獲得的Connection都是已經被包裹過的(不是 驅動原來的連接),他的close方法已經被修改。 l一般DataSource內部會用一個連接池來緩存Connection
lDataSource用來取代DriverManager來獲取Connection;commons-dbcp-1.2.1.jar,
commons-pool-1.2.jar,
commons-collections-3.1.jar。
l配置參數。properties);
2.dbcpconfig.properties配置文件內容:
#連接設置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=root
#
initialSize=10
#最大連接數量
maxActive=50
#
maxIdle=20
#
minIdle=5
#
maxWait=60000
#JDBC驅動建立連接時附帶的連接屬性屬性的格式必須為這樣:[屬性名=property;]
#注意:"user" 與 "password" 兩個屬性會被明確地傳遞,因此這里不需要包含他們。
connectionProperties=useUnicode=true;characterEncoding=gbk
#指定由連接池所創建的連接的自動提交(auto-commit)狀態。
defaultAutoCommit=true
#driver default 指定由連接池所創建的連接的只讀(read-only)狀態。
#如果沒有設置該值,則“setReadOnly”方法將不被調用。(某些驅動并不支持只讀模式,如:Informix)
defaultReadOnly=
#driver default 指定由連接池所創建的連接的事務級別(TransactionIsolation)。
#可用值為下列之一:(詳情可見javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
3.不需要再寫數據源,直接用
public final class JdbcUtils { private static DataSource myDataSource = null; private JdbcUtils() { } static { try { Class.forName("com.mysql.jdbc.Driver");
// myDataSource = new MyDataSource2();
Properties prop = new Properties(); // prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
// prop.setProperty("user", "user"); InputStream is = JdbcUtils.class.getClassLoader() .getResourceAsStream("dbcpconfig.properties"); prop.load(is); myDataSource = BasicDataSourceFactory.createDataSource(prop);//創建數據源,一句代碼就完成 } catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static DataSource getDataSource() { return myDataSource; } public static Connection getConnection() throws SQLException { // return DriverManager.getConnection(url, user, password); return myDataSource.getConnection(); } public static void free(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) try { conn.close(); // myDataSource.free(conn); } catch (Exception e) { e.printStackTrace(); } } } } }
4.測試
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; i++) {
Connection conn = JdbcUtils.getConnection();
System.out.println(conn);
JdbcUtils.free(null, null, conn);
}
}
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com