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,这个是基础,没什么好说的,往后我们分析源码会看到更多的配置及其作用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 07:15:02

C3P0整体类结构简单分析2的相关文章

C3P0整体类结构简单分析

直接进入主题吧: 这张图只是C3P0的部分结构类图,不急,先对总体上有一个了解. 首先我们需要了解,C3P0是"懒初始化"的.也就是说它并不会自己初始化,而是会等到第一个连接请求进来之后它才会初始化.而那个触发点就是: ComboPooledDataSource.getConnection(); 了解上面说的"懒初始化"之后,我们来介绍C3P0中几个主要的类: ComboPooledDataSource ComboPooledDataSource: 和外界交互的类,

ffplay.c函数结构简单分析(绘图)

近期重温了一下FFplay的源码. FFplay是FFmpeg项目提供的播放器演示样例.虽然FFplay不过一个简单的播放器演示样例,它的源码的量也是不少的. 之前看代码,主要是集中于某一个"点"进行研究,而没有从整体结构上进行分析.本文就打算弥补之前学习的不足,从整体结构上分析一下FFplay的源码,绘图理一下它的结构.当中还有诸多不足.以后有机会慢慢完好.说明一下自己画的结构图的规则:图中仅画出了比較重要的函数之间的调用关系. 粉红色的函数是FFmpeg编解码类库(libavcod

FFmpeg源码简单分析:结构体成员管理系统-AVOption

===================================================== FFmpeg的库函数源码分析文章列表: [架构图] FFmpeg源码结构图 - 解码 FFmpeg源码结构图 - 编码 [通用] FFmpeg 源码简单分析:av_register_all() FFmpeg 源码简单分析:avcodec_register_all() FFmpeg 源码简单分析:内存的分配和释放(av_malloc().av_free()等) FFmpeg 源码简单分析:常

FFmpeg源代码简单分析:avformat_alloc_output_context2()

本文简单分析FFmpeg中常用的一个函数:avformat_alloc_output_context2().在基于FFmpeg的视音频编码器程序中,该函数通常是第一个调用的函数(除了组件注册函数av_register_all()).avformat_alloc_output_context2()函数可以初始化一个用于输出的AVFormatContext结构体.它的声明位于libavformat\avformat.h,如下所示. /** * Allocate an AVFormatContext

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

java基础---->hashSet的简单分析(一)

对于HashSet而言,它是基于HashMap实现的,底层采用HashMap来保存元素的.今天我们就简单的分析一下它的实现. HashSet的简单分析 一.hashSet的成员变量组成 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable private transient HashMap<E,Object> map;

FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分

上篇文章概述了FFmpeg中HEVC(H.265)解码器的结构:从这篇文章开始,具体研究HEVC解码器的源代码.本文分析HEVC解码器中解析器(Parser)部分的源代码.这部分的代码用于分割HEVC的NALU,并且解析SPS.PPS.SEI等信息.解析HEVC码流(对应AVCodecParser结构体中的函数)和解码HEVC码流(对应AVCodec结构体中的函数)的时候都会调用该部分的代码完成相应的功能. 函数调用关系图 FFmpeg HEVC解析器(Parser)部分在整个HEVC解码器中的

x264源代码简单分析:熵编码(Entropy Encoding)部分

本文记录x264的 x264_slice_write()函数中调用的x264_macroblock_write_cavlc()的源代码.x264_macroblock_write_cavlc()对应着x264中的熵编码模块.熵编码模块主要完成了编码数据输出的功能. 函数调用关系图 熵编码(Entropy Encoding)部分的源代码在整个x264中的位置如下图所示. 单击查看更清晰的图片 熵编码(Entropy Encoding)部分的函数调用关系如下图所示.   单击查看更清晰的图片 从图中

u-boot分析(十一)----MMU简单分析|u-boot分析大结局|学习规划

u-boot分析(十一) 通过前面十篇博文,我们已经完成了对BL1阶段的分析,通过这些分析相信我们对u-boot已经有了一个比较深入的认识,在BL2阶段大部分是对外设的初始化,并且有的我们已经分析过,在这篇博文我打算对BL1阶段没有分析到的重要外设进行简单分析,并结束对u-boot的分析,同时对后面自己的博文进行简单的规划,希望有兴趣的朋友跟我一块学习和研究嵌入式. 今天我们会分析到以下内容: 1.      MMU分析(内容出自我以前的博客) 2.      裸机开发总结 3.      后期