`
45808916
  • 浏览: 5706 次
文章分类
社区版块
存档分类
最新评论

C3P0整体类结构简单分析2

 
阅读更多

上一篇结构分析我们看了C3P0大概的类图结构,下面我们来看看C3P0连接池初始化的时序图:

Created with Raphaël 2.1.0C3P0连接池初始化过程UserUserComboPooledDataSourceComboPooledDataSourceC3P0PooledConnectionPoolManagerC3P0PooledConnectionPoolManagerC3P0PooledConnectionPoolC3P0PooledConnectionPoolBasicResourcePoolBasicResourcePoolgetConnection()getPool()checkoutPooledConnection()checkoutResource()

上一节也提到了C3P0连接池是“懒初始化”的,注意这里的初始化指的是实际创建第一条数据库连接。比如我们典型的使用C3P0连接池的代码:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver            
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("dbuser");                                  
cpds.setPassword("dbpassword");      

Connection connection = cpds.getConnection();
// execute sql

还记得C3P0的参数配置中有一项叫做 连接池 初始连接数吗?那么连接池的初始化到底是什么时候做的呢?其实是当第一次获取数据库连接的时候,也就是执行下面一行代码时:

Connection connection = cpds.getConnection();

这时候会根据对ComboPooledDataSource配置的参数进行连接池的初始化,上面设置的是最基本的连接四要素:driverClass, jdbcUrl, user, password,这个是基础,没什么好说的,往后我们分析源码会看到更多的配置及其作用。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    c3p0-0.9.5-pre7.zip

    2. **Statement缓存**:C3P0不仅管理数据库连接,还缓存了已经编译过的PreparedStatement对象,这可以避免每次执行相同SQL时的编译过程,进一步提升性能。 3. **高度并发**:C3P0设计时考虑了高并发场景,它采用了...

    数据库连接池C3P0,jar包

    4. **并发控制**:C3P0使用线程安全的数据结构来确保多线程环境下的稳定性。 5. **配置灵活性**:C3P0提供了丰富的配置选项,如最小连接数、最大连接数、获取连接超时时间等,可以根据不同应用场景进行定制。 在...

    并行计算之C3模型

    ### 并行计算之C3模型详解 #### C3模型概述 C3模型是由S.E.Hambrush和A.A.Khokhar等人于1994年提出的一种用于描述并行计算机系统的计算模型。该模型主要针对粗粒度并行系统进行设计,尤其适用于九十年代以来广泛...

    JSP源码JSP数据库连接池的研究与实现(源代码+论文)

    2. **使用第三方库**:如C3P0、DBCP、HikariCP等,它们提供了更为高效且易于管理的数据库连接池解决方案。 3. **自定义实现**:虽然较为复杂,但对于特定需求有更高的灵活性。自定义实现通常包括连接的创建、获取、...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    java基础 一、仓库说明 Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收...Servlet 集成 C3P0

    JDBC 结构优化2 ATM交互系统源码

    Apache DBCP、C3P0和HikariCP是常见的连接池实现。 4. **关闭资源**:每次操作完成后,记得关闭ResultSet、Statement和Connection,释放资源,避免内存泄漏。 5. **使用数据访问对象(DAO)模式**:将数据库操作...

    bookstore.rar

    《基于c3p0、dbutils与MVC的商城系统实现——JavaWeb课程设计详解》 在JavaWeb开发中,商城系统的实现是一项重要的实践任务,它涵盖了多项核心技术,包括前端展示、后端处理、数据库操作以及框架应用。本项目...

    oracle9i 自带连接池Java代码

    ##### 3.1 类结构及属性定义 在给定的Java代码中,`OraPooledSQL`类实现了对Oracle9i连接池的基本操作。该类包含了以下几个关键属性: - `private PooledConnection dbpool;`:表示连接池对象。 - `private String...

    POI从数据库查询数据写入Excel工具类

    这可能涉及到数据库连接池的使用,如C3P0或HikariCP,以提高性能和资源利用率。 5. **数据写入Excel**:查询结果将被转换为二维数组或其他适合的数据结构,然后利用POI提供的API,将这些数据一行行写入到Excel工作...

    Javaweb实验报告.docx

    2. 学会和运用 servlet 技术、log4j 技术、jdom 技术、ifreechart 技术、struts 技术、OGNL 技术、action 对象组织、页面间转接关系、数据连接技术、JDBC 数据库连接技术、DBCP 数据库连接池和 c3p0 连接池连接数据...

    ssh框架学习指南介绍ssh的框架结构

    &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt; &lt;!-- 数据库连接信息 --&gt; &lt;!-- 连接池配置 --&gt; ``` #### 四、SSH框架的关键组成部分 ...

    补跟我一起写大虾网(第1天源码)

    4. **c3p0-0.9.1.2.jar**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一些额外的管理特性,如连接测试、自动关闭等。 5. **commons-collections-3.1.jar**:Apache Commons Collections是...

    struts2_spring3.x+mybatis3.x+DB2整合案例

    2. **数据库连接**:配置DB2的JDBC驱动,创建数据库连接池,如使用C3P0或Druid。 3. **Spring配置**:创建Spring的配置文件,定义数据源、事务管理器以及MyBatis的SqlSessionFactory。 4. **MyBatis配置**:编写...

    Sky管理系统及数据库文件.zip

    3. **c3p0数据库连接池**:c3p0是一个开源的JDBC连接池,它提供了数据源管理和连接管理功能,能有效地提高数据库访问效率,减少数据库连接创建和释放的开销。在Sky管理系统中,c3p0被用作数据库连接管理工具,以优化...

    福建省莆田第八中学2017_2018学年高二化学下学期期中试题

    3. 碳酸亚乙酯的结构表明其分子中含有C、O、H元素,不是C3O3,分子中σ键数量为7个,而非8个。根据分子量可以计算其燃烧产物的体积,但要注意标况下才能直接用摩尔体积计算。 4. 共价键键能大小影响物质的状态和...

    J2EE企业级项目开发-3期(KC007) 6.3 MyBatis的体系结构考试.doc

    - **连接池管理机制**:MyBatis可以集成多种数据库连接池,如Druid、C3P0等,以实现数据库连接的高效复用,降低系统资源消耗。 - **缓存机制**:MyBatis内置了本地缓存和二级缓存,可以缓存查询结果,减少不必要的...

    java performance

    - 数据库连接池的配置与使用,如C3P0、HikariCP等。 以上知识点只是《Java性能优化》一书部分内容的概述,全书还包含了更多实践案例、实战技巧和最佳实践。通过深入学习和实践,开发者可以提升Java应用的性能,...

    Java生产环境下性能监控与调优详解课程笔记(完整版)

    2. 连接池配置:如C3P0、HikariCP等,合理设置连接池参数,减少数据库连接创建的开销。 3. 分库分表:应对大数据量,提高查询效率。 4. 缓存策略:利用Redis、Memcached等缓存技术减轻数据库压力。 六、代码优化 1...

Global site tag (gtag.js) - Google Analytics