博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb学习过程 之c3p0的使用
阅读量:5123 次
发布时间:2019-06-13

本文共 3805 字,大约阅读时间需要 12 分钟。

  这几天在学习使用MVC模式来做几个小项目,在学习的过程中,用到了数据库连接池。便特意去学习了一下。

 

一、谈一谈为什么要使用数据库连接池

  在开发基于数据库的web程序时,传统的模式(在servlet,beans 中建立数据库链接,进行sql操作, 断开数据库链接) 存在着一些问题。

  每次连接都需要验证用户,消耗了大量的资源和时间。数据库的连接资源并没有得到很好地重复利用。再如,同时几万人在线频繁的连接数据库,系统资源消耗巨大,内存可能泄漏,服务器也可能会崩溃。

 

二、什么是数据库连接池

  1.基本思想:可以为数据库建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从“缓冲池”中取出一个,使用完毕再放回去,避免了重复连接所消耗的时间与资源。

  

  2.职责:数据库连接池负责分配,管理,和释放数据库链接,它允许应用程序重复使用一个现有的数据库链接,而不是新建立一个。

  

  3.JDBC的数据库链接池使用javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口通常由服务器(Webblogic,Tomact)提供实现,也有一些开源组织提供实现:DBCP,C3P0。

 

三、使用C3P0 数据库连接池

  C3P0有两种连接方式。

  1.第一种:

    具体步骤:

      1.导入所需jar包

      2.java代码

      

1 import java.beans.PropertyVetoException; 2 import java.sql.Connection; 3 import java.sql.SQLException; 4  5 import com.mchange.v2.c3p0.ComboPooledDataSource; 6  7  8 public class JDBCUtils { 9     private static Connection conn=null;10     private static ComboPooledDataSource comboPooledDataSource=new ComboPooledDataSource();11     12     public static Connection getConnection(){13         try {14             comboPooledDataSource.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver");15             comboPooledDataSource.setJdbcUrl("jdbc:sqlserver://localhost:1433;databasename=mysql");16             comboPooledDataSource.setUser("sa");17             comboPooledDataSource.setPassword("1546873");18             19             comboPooledDataSource.setAcquireIncrement(5);// 可以设置连接池的各种属性20             21             conn=comboPooledDataSource.getConnection();22         } catch (PropertyVetoException e) {23             // TODO Auto-generated catch block24             e.printStackTrace();25         } catch (SQLException e) {26             // TODO Auto-generated catch block27             e.printStackTrace();28         }29         return conn;30     }31 32 }

 

  2.第二种:

    具体步骤:

      1.导入jar包

      2.配置xml文件。 配置文件名必须名为 c3p0-config.xml 并且放在src目录下

      代码如下

1 
2
3
sa
4
ztg591379771
5
com.microsoft.sqlserver.jdbc.SQLServerDriver
6
jdbc:sqlserver://localhost:1433;databasename=mysql
7 8
9
10
5
11 12 13
14
10
15 16 17
18
10
19 20 21
22
50
23 24
27
20
28 29 30
31
32
5
33 34
35

      3.编写utils工具类

1 import java.sql.Connection; 2 import java.sql.SQLException; 3  4 import com.mchange.v2.c3p0.ComboPooledDataSource; 5  6 public class JdbcUtils { 7      8     /** 9      * 释放链接10      * @param connection11      */12     public static void releaseConnection(Connection connection){13         if(connection!=null){14             try {15                 connection.close();16             } catch (SQLException e) {17                 // TODO Auto-generated catch block18                 e.printStackTrace();19             }20         }21     }22     23     24     private static ComboPooledDataSource dataSource=null;25     26     static{27         //只被创建一次28         dataSource=new ComboPooledDataSource("myc3p0");  // myc3p0 一定要与配置文件中的名字一样29     }30         31     /**32      * 返回数据源的一个Connection 对象33      * @return34      * @throws Exception 35      */36     public static Connection getConnection() throws Exception{37         return dataSource.getConnection();38     }    39 }

 

 

  以上是我今天学到的关于c3p0的一些知识,今后在学习的过程中慢慢摸索,逐渐补充。

 

 

    

    

 

  

转载于:https://www.cnblogs.com/ztg-learn/p/5887059.html

你可能感兴趣的文章
用border画三角形
查看>>
ASP.NET Core 借助 K8S 玩转容器编排
查看>>
Docker 查看镜像信息
查看>>
WPF 绑定StaticResource到控件的方法
查看>>
Creating a Pulsing Circle Animation
查看>>
Docker最全教程——从理论到实战(八)
查看>>
WPF 蒙罩层 LoadingPage
查看>>
SQLServer日期格式化
查看>>
Android项目实战(二十二):启动另一个APP or 重启本APP
查看>>
VS生成Cordova for Android应用之Gradle
查看>>
ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...
查看>>
VSTO 得到Office文档的选中内容(Word、Excel、PPT、Outlook)
查看>>
Ubuntu 14.04 LAMP搭建(Apache 2.47+MySQL 5.5+PHP5.5)
查看>>
使用.net备份和还原数据库
查看>>
ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布
查看>>
asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)...
查看>>
一些有用的javascript实例分析(二)
查看>>
Android_Kotlin 代码学习
查看>>
关于android:windowNoTitle不起作用的解决办法
查看>>
关于使用Transaction对于非数据库事务的操作
查看>>