




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3301000falseTestfalse100nullfalse602 / 16360151003rootpasswordselect id from test where id=1300falsetruerootfalseacquireIncrement - 5 acquireRetryAttempts - 30 acquireRetryDelay - 1000 autoCommitOnClose - false automaticTestTable - null breakAfterAcquireFailure - true checkoutTimeout - 0 connectionC
2、ustomizerClassName - null connectionTesterClassName - com.mchange.v2.c3p0.impl.DefaultConnectionTester dataSourceName - 1bqp8hc8ezqxpjc1hp9gny|704baa debugUnreturnedConnectionStackTraces - false description - null driverClass - com.mysql.jdbc.Driver factoryClassLocation - null forceIgnoreUnresolvedT
3、ransactions - 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 maxIdle
4、Time - 60 maxIdleTimeExcessConnections - 0 maxPoolSize - 30 maxStatements - 0 maxStatementsPerConnection - 0 minPoolSize - 5 numHelperThreads - 3 numThreadsAwaitingCheckoutDefaultUser - 0 preferredTestQuery - null properties - user=*password=* propertyCycle - 0 testConnectionOnCheckin - false testCo
5、nnectionOnCheckout - 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;/* 向连接池列表添加一个新的池化(Poo
7、led)数据源* 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* par
8、am username 数据库连接用户名,如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.
9、unpooledDataSource(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 E
10、xceptionif (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注入
11、数据源4.3 从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 DataSo
12、urce ds_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 SQLExcep
13、tion*/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 DataSo
14、urce ds_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.State
15、ment;import 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
16、) throws 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 commitTran
17、saction() 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 s
18、tatic 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();con
19、n.close();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
20、setConnection(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷人教版(五四制)6年级数学下册期末试题附完整答案详解(名师系列)
- 骨科护理学选择题试题与答案
- 2025年新能源汽车二手车市场评估与流通政策法规解读与应对策略报告
- 2025年在线教育平台教学资源库建设与教学效果评估策略报告
- 解析卷福建省永安市七年级上册有理数及其运算章节训练试题
- 养老服务协议范本
- 威海市编导岗位国企招聘笔试题
- 2025地形图保密承诺合同涉及国家重要交通线路规划
- 2025版智慧城市照明系统日常维护及升级合同
- 2025版智慧农业管理系统软件销售与技术服务协议
- 骨干教师专业成长规划
- 《业务洽谈技巧》课件
- 2024全新标前协议书范本下载
- 烟草专卖局培训课件:烟草专卖法
- 工程人员驻场服务方案
- 公司安全事故隐患内部举报、报告奖励制度
- 中小学校保安服务方案(技术方案)
- 南外初中小语种课程设计
- 直播供货协议合同范本
- DB3411∕T 0039-2024 废包装桶回收再利用技术规范
- 2024年二次离婚起诉状范文
评论
0/150
提交评论