浅谈数据库连接池
第一代连接池
区分一个数据库连接池是属于第一代产品还是第二代产品的一个最重要特征就是看它在架构和设计时采用的线程模型,因为这直接影响的并发环境下存取数据库连接的性能。
一般来讲采用单线程同步的架构设计的都属于第一代连接池,而采用多线程异步架构的则属于第二代。比较有代表性的就是 Apache Commons DBCP,在 1.x 版本中,一直延续这单线程设计模型,到 2.x 版本才采用多线程模型。
已经彻底死掉的 c3p0 和 proxool
c3p0 在很长一段时间内,它一直是 Java 领域内数据库连接池的代名词,当年盛极一时的 Hibernate 都将其作为内置的数据库连接池。c3p0 功能简单易用,稳定性好这,但性能很差,最致命的问题就是架构设计过于复杂。
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
maven
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3pc.version}</version>
</dependency>
proxool 由于产品作者兴趣的缺失,让这款本来很有潜力的产品早早夭折。
咸鱼翻身的dbcp
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content