c3p0

Posted by Bruce Tsai
07/18/2016

c3p0 是一個易於使用的 JDBC 連接池,它實現了資料源與 JNDI 綁定,支援了 JDBC3 與 JDBC2 的擴展描述。除了獨立使用外,可以跟 Hibernate 或 Spring 整合,配置所需要的連線資訊。

範例

  • 獨立使用
ComboPooledDataSource cpds = new ComboPooledDataSource(); 
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc 
driver
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" ); 
cpds.setUser("swaldman");
cpds.setPassword("test-password");

// the settings below are optional -- c3p0 can work with defaults 
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5); 
cpds.setMaxPoolSize(20);
  • 整合 Hibernate (hibernate.cfg.xml)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"
-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:MKYONG</property>
  <property name="hibernate.connection.username">mkyong</property>
  <property name="hibernate.connection.password">password</property>
  <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
  <property name="hibernate.default_schema">MKYONG</property>
  <property name="show_sql">true</property>
  <property name="hibernate.c3p0.min_size">5</property>
  <property name="hibernate.c3p0.max_size">20</property>
  <property name="hibernate.c3p0.timeout">300</property>
  <property name="hibernate.c3p0.max_statements">50</property>
  <property name="hibernate.c3p0.idle_test_period">3000</property>
  <mapping class="com.mkyong.user.DBUser"></mapping>
 </session-factory>
</hibernate-configuration>
  • 整合 Spring
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
                     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                     http://www.springframework.org/schema/context
                     http://www.springframework.org/schema/context/spring-context-3.0.xsd
                     http://www.springframework.org/schema/tx
                     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

 <bean id="employeeDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="driverClass" value="${jdbc.driverClassName}" />
  <property name="jdbcUrl" value="${jdbc.employee_db_url}" />
  <property name="user" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
  <property name="minPoolSize" value="${jdbc.minPoolSize}" />
  <property name="maxStatements" value="${jdbc.maxStatements}" />
  <property name="testConnectionOnCheckout" value="${jdbc.testConnection}" />
 </bean>
</beans>

results matching ""

    No results matching ""