c3p0数据库连接池使用步骤(课余练习)

c3p0:数据库连接池使用步骤(课余练习)

什么是数据库连接池?

其实就是一个容器(集合),用来存放数据库链接的容器

当系统初始化好之后,容器被创建,容器中会申请一些链接对象,当用户来访问数据库的时候,从容器中获取链接对象,用户访问完成后,会将链接对象归还给这个容器

数据库连接池的优点:

  • 节约资源
  • 用户访问高效

如何实现:

  • DataSource:javax.sql 包下的一个接口,数据源是一个接口,sun公司没有给定具体的实现类,谁用谁实现,具体有三种实现方式

    • 基本实现 -生成标准的Connection对象(意思就是可以从这个容器中拿到Connection对象)
    • 连接池实现 - 生成将自动参与连接池的Connection对象。 此实现与中间层连接池管理器配合使用。
    • 分布式事务实现 - 生成可用于分布式事务的Connection对象,并且几乎总是参与连接池。 此实现与中间层事务管理器一起工作,并且几乎总是使用连接池管理器。
  • DataSource接口

    • 方法:获取链接

      Connection getConnection()throws SQLException
      
    • 方法:归还链接,如果链接对象Connection是从链接池中获取的,调用close方法不会关闭资源,而是将链接对象归还到容器中去

  • 一般我们不去实现它,由数据库厂商来实现,他们都要实现DataSource接口

c3p0

步骤:

  • 导入jar包:
    • c3p0-0.9.5.4.jar
    • mchange-commons-java-0.2.11.jar:c3p0依赖于此包
  • 定义配置文件:
    • 名称:c3p0.properties或者c3p0-config.xml
    • 路径:直接将文件放在src目录下即可(类路径)
  • 创建核心对象 数据库连接池对象
    • CombopooledDataSource
  • 获取链接
    • getConnection

配置文件:


<c3p0-config>
    <default-config>
        
        <property name="driverClass">com.mysql.jdbc.Driverproperty>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcproperty>
        <property name="user">rootproperty>
        <property name="password">rootproperty>
        
        <property name="initialPoolSize">5property>
        <property name="maxPoolSize">10property>
        <property name="maxIdleTime">1000property>
    default-config>
c3p0-config>

代码实现:

public class C3p0Demo {
    public static void main(String[] args) throws SQLException {
        //获取数据源
        DataSource ds = new ComboPooledDataSource();
        //获取连接
        Connection connection = ds.getConnection();
        //获取sql执行对象
        Statement statement = connection.createStatement();
        //执行sql
        statement.executeUpdate("insert into user values(null,'lisi','123456')");
        //关闭资源
        connection.close();
    }
}

你可能感兴趣的:(课余练习)