已阅读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广东广州市白云区人民政府松洲街道办事处招聘项目工作人员6人备考题库(第二次)含答案详解ab卷
- 2025年河北保定市公安局招聘警务辅助人员48名备考题库及答案详解(易错题)
- 2025广东梅州市平远县总工会招聘社会化工会工作者6人备考题库及答案详解(网校专用)
- 2025年下半年虹口区曲阳路街道见习社区工作者公开招聘6人备考题库含答案详解(突破训练)
- 2026中国邮政储蓄银行云南省分行校园招聘备考题库附答案详解(研优卷)
- 2026“梦想靠岸”招商银行东莞分行冬季校园招聘备考题库附答案详解(基础题)
- 2026年中国农业银行总行校园招聘备考题库完整参考答案详解
- 2026中信信托校园招聘备考题库(待启动)含答案详解(培优)
- 土建安全典型事故案例分析
- 民兵军事训练教案
- 项目管理办公室建立与职责指南
- 国债质押借款合同范本
- 《十五五规划》客观测试题及答案解析(二十届四中全会)
- 精神病学中级(专业知识)模拟试卷1(共504题)
- 光伏发电储能系统维护操作规程
- 七台河市中石化2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 游戏厅安全管理细则
- 2025年新版道德与法治教学课件(三年级)
- 2024低温低浊水给水处理设计标准
评论
0/150
提交评论