




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3301000falseTestfalse100nullfalse60360151003rootpasswordselect id from test where id=1300falsetruerootfalseacquireIncrement - 5 acquireRetryAttempts - 30 acquireRetryDelay - 1000 autoCommitOnClose - false automaticTestTable - null breakAfterAcquireFailure - true checkoutTimeout - 0 connectionCustomi
2、zerClassName - null connectionTesterClassName - com.mchange.v2.c3p0.impl.DefaultConnectionTester dataSourceName - 1bqp8hc8ezqxpjc1hp9gny|704baa debugUnreturnedConnectionStackTraces - false description - null driverClass - com.mysql.jdbc.Driver factoryClassLocation - null forceIgnoreUnresolvedTransac
3、tions - false identityToken - 1bqp8hc8ezqxpjc1hp9gny|704baa idleConnectionTestPeriod - 60 initialPoolSize - 5 jdbcUrl - jdbc:mysql:/localhost:3306/db_temp?useUnicode=true&characterEncoding=utf-8 lastAcquisitionFailureDefaultUser - null maxAdministrativeTaskTime - 0 maxConnectionAge - 0 maxIdleTime -
4、 60 maxIdleTimeExcessConnections - 0 maxPoolSize - 30 maxStatements - 0 maxStatementsPerConnection - 0 minPoolSize - 5 numHelperThreads - 3 numThreadsAwaitingCheckoutDefaultUser - 0 preferredTestQuery - null properties - user=*password=* propertyCycle - 0 testConnectionOnCheckin - false testConnecti
5、onOnCheckout - false unreturnedConnectionTimeout - 0 usesTraditionalReflectiveProxies - falsepackage com.paipaiestore.database.c3p0;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.sql.DataSource;import com.mchange.v2.c3p0.DataSources;/* 数据连接池
6、工厂* author samland* version 1.0, 2006-11*/public class DBPoolFactory private static DBPoolFactory dbpoolFactory = new DBPoolFactory();/* 连接池列表*/private static Map poollist = new HashMap();private DBPoolFactory()public static DBPoolFactory getInstance()return dbpoolFactory;/* 向连接池列表添加一个新的池化(Pooled)数据
7、源* param key* param configFile 配置文件名。为了简化参数输入与便于外部维护,可以把配置好的文件传入这里分析*/public void add(String key, String configFile) /read config from file, and build a dbpool/* 向连接池列表添加一个新的池化(Pooled)数据源* param key* param driver 数据连接驱动,如com.mysql.jdbc.Driver* param url 连接串, 如jdbc:mysql:/localhost/samland* param use
8、rname 数据库连接用户名,如samland* param password 数据库连接用户密码* throws Exception*/public void add(String key, String driver, String url, String username, String password)throws Exceptionif (key=null) throw new Exception(DBPool key CANNOT be null) ;Class.forName(driver);DataSource ds_unpooled = DataSources.unpool
9、edDataSource(url, username, password);DataSource ds_pooled = DataSources.pooledDataSource( ds_unpooled );if (poollist.containsKey(key)poollist.remove(key);poollist.put(key, ds_pooled);/* 根据key字符串获取连接池* param key* return DBPool 连接池* throws Exception*/public DBPool getDBPool(String key) throws Excepti
10、onif (key=null) throw new Exception(DBPool key CANNOT be null) ;DataSource ds = (DataSource)poollist.get(key);DBPool dbpool = new DBPool();dbpool.setDs_pooled(ds);return dbpool;/四、连接池的使用通过DBPool来获取数据库连接 (jdbc connection)。4.1 由DBPoolFactory工厂产生一个DBPool4.2 同时,DBPoolFactory工厂根据传入的参数key向这个DBPool注入数据源4.3
11、 从DBPool产生线程内的Connection/package com.paipaiestore.database.c3p0;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;public class DBPool /* 数据库连接。同一个线程使用同一个连接。*/protected static ThreadLocal connection = new ThreadLocal();/* 数据源,需由DBPoolFactory工厂注入*/private DataSource d
12、s_pooled;/* 不能独立构造,必须从DBPoolFactory工厂产生*/protected DBPool()/* get 数据源* return*/public DataSource getDs_pooled() return ds_pooled;/* 注入数据源* param ds_pooled*/public void setDs_pooled(DataSource ds_pooled) this.ds_pooled = ds_pooled;/* 获得数据库连接* 同一个线程只返回相同的一个连接。* return Connection* throws SQLException*/
13、public Connection getConnection() throws SQLExceptionConnection con = (Connection)connection.get();if (con=null) con = ds_pooled.getConnection();connection.set(con);return con;/五、改进线程内数据库连接的使用为了适应程序已经使用开的jdbc事务管理,因此需要改进DBPool成为Transaction类,而原来的DBPool则缩减为如下代码:/public class DBPool private DataSource d
14、s_pooled;protected DBPool()public DataSource getDs_pooled() return ds_pooled;public void setDs_pooled(DataSource ds_pooled) this.ds_pooled = ds_pooled;/package com.paipaiestore.database.c3p0;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;i
15、mport javax.sql.DataSource;public class Transaction /* 数据库连接。同一个线程使用同一个连接。*/protected static ThreadLocal connection = new ThreadLocal();protected static boolean isInUsed = false;/* 开始一个事务* 如果当前线程的数据库连接不存在,则会新获得一个数据库连接* param key* throws Exception*/public static void beginTransaction(String key) thro
16、ws ExceptionConnection conn = (Connection)connection.get();if (conn=null) conn = createConnection(key);setConnection(conn);conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);conn.setAutoCommit(false);isInUsed = true;/* 提交一个事务* throws SQLException*/public static void commitTransactio
17、n() throws SQLException Connection conn = (Connection)connection.get();mit();/* 回滚一个事务* throws SQLException*/public static void rollbackTransaction() throws SQLException Connection conn = (Connection)connection.get();conn.rollback();public static boolean getIsInUsed() return isInUsed;private static
18、void closeConnection() try Connection conn = (Connection)connection.get();if (conn!=null) connection.set(null);conn.close();catch(SQLException sqlexception) private static void close(ResultSet rs)tryStatement st = rs.getStatement();Connection conn = st.getConnection();rs.close();st.close();conn.clos
19、e();catch(Exception exception) /* 获得数据库连接* 同一个线程只返回相同的一个连接。* return* throws SQLException*/public static Connection getConnection() throws SQLException Connection conn = null;conn = (Connection)connection.get();if(conn = null)throw new NullPointerException();elsereturn conn;private static void setCon
20、nection(Connection conn)connection.set(conn);/* 获得一个新的数据库连接* param key* return Connection* throws Exception*/private static Connection createConnection(String key)throws Exception DBPoolFactory df = DBPoolFactory.getInstance();DataSource ds_pooled = df.getDBPool(key).getDs_pooled() ;Connection conn = ds_pooled.getConnection();df = null;return conn;/六、测试/package samland;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉类罐头加工过程中的食品安全隐患与预防考核试卷
- 稀土金属冶炼与战略新兴产业考核试卷
- 玻璃纤维射击靶考核试卷
- 篷布企业供应链风险管理考核试卷
- 精神障碍的康复教育介入考核试卷
- 四川大学《移动应用开发(Andoid)》2023-2024学年第一学期期末试卷
- 上海市长宁区高级中学2025年初三下期中生物试题试卷含解析
- 南平市建瓯市2025年重点中学小升初数学入学考试卷含解析
- 山东华宇工学院《中外文化交流(Ⅰ)》2023-2024学年第一学期期末试卷
- 辽宁省普兰店市2025年高考语文试题疯狂小题抢高分含解析
- 2023年辽宁高考数学试题及答案经典word版(理科)
- 博物馆藏品库房管理课件
- 2022年2月兴业银行审计部招聘人员模拟试题3套(含答案解析)
- 工贸行业重点可燃性粉尘目录(2015版)
- 焊接质量检查表
- 形式发票模板
- 高一语文《赤壁赋》 完整版课件PPT
- DB32∕T 2880-2016 光纤传感式桥隧结构健康监测系统设计、施工及维护规范
- 北师大版小学数学二年级下册第三单元《练习二》教学设计建议及课本习题解析
- 渤海财险非车险业务培训
- 水工隧洞施工ppt课件
评论
0/150
提交评论