




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 30 1000 false Test false 100 null false 60 3 60 15 100 3 root password select id from test where id 1 300 false true root false acquireIncrement 5 acquireRetryAttempts 30 acquireRetryDelay 1000 autoCommitOnClose false automaticTestTable null breakAfterAcquireFailure true checkoutTimeout 0 connectionCustomizerClassName null connectionTesterClassName com mchange v2 c3p0 impl DefaultConnectionTester dataSourceName 1bqp8hc8ezqxpjc1hp9gny 704baa debugUnreturnedConnectionStackTraces false description null driverClass com mysql jdbc Driver factoryClassLocation null forceIgnoreUnresolvedTransactions false identityToken 1bqp8hc8ezqxpjc1hp9gny 704baa idleConnectionTestPeriod 60 initialPoolSize 5 jdbcUrl jdbc mysql localhost 3306 db temp useUnicode true 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 数据连接池工厂 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 数据源 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 username 数据库连接用户名 如 samland param password 数据库连接用户密码 throws Exception public void add String key String driver String url String username String password throws Exception if key null throw new Exception DBPool key CANNOT be null Class forName driver DataSource ds unpooled DataSources 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 Exception if 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 工厂产生一个 DBPool 4 2 同时 DBPoolFactory 工厂根据传入的参数 key 向这个 DBPool 注入数据源 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 DataSource 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 SQLException public Connection getConnection throws SQLException Connection 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 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 Statement 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 throws Exception Connection 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 commitTransaction 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 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 try Statement st rs getStatement Connection conn st getConnection rs close st close conn 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 else return conn private static void 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 import com paipaiestore database c3p0 DBPoolFactory import com paipaiestore database c3p0 Transaction public class TestTransaction param args public static void main String args DBPoolFactory df DBPoolFactory getInstance Connection con null Statement stmt null ResultSet rs null try df add jxc com mysql jdbc Driver jdbc mysql amland samland Tran
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年固态地振动强度记录仪项目规划申请报告模板
- 2025年职业技能中式烹调师中式烹调师(初级)-中式烹调师(中级)参考题库含答案解析
- 看图写话课件
- 2025年特种作业类危险化学品安全作业聚合工艺作业-氟化工艺作业参考题库含答案解析
- 用电安全协议书
- 2025年特种作业类危险化学品安全作业加氢工艺作业-氧化工艺作业参考题库含答案解析
- 专题07 物质构成的微粒和物质组成的表示(河北专用)5年(2021-2025)中考1年模拟《化学》真题分类汇编
- 2025年建筑工程类注册安全工程师安全生产技术基础-安全生产专业实务(金属非金属矿山安全)参考题库含答案解析
- 木渎培东冬令营数学试卷
- 2025年建筑工程类材料员基础知识-基础知识参考题库含答案解析
- 2025年职业技能鉴定考试(脱硫值班员·中级/四级)历年参考题库含答案详解(5套)
- 公钥可搜索加密协议:设计原理、安全分析与前沿探索
- 2025年体彩代销者考试题库
- 2025至2030聚乙烯醇缩丁醛(PVB)树脂行业发展趋势分析与未来投资战略咨询研究报告
- 2025年小学语文教师考试题库含答案
- 2025中国医药集团有限公司二级子公司及重点三级子公司高管岗位选聘笔试历年参考题库附带答案详解
- 船舶安全教育培训内容
- 人工动静脉瘘闭塞查房
- 2025年贵州省中考数学试卷及答案
- 2025年第十届全国中小学“学宪法、讲宪法”知识竞赛题库
- 学堂在线 积极心理学(上)厚德载物篇 章节测试答案
评论
0/150
提交评论