java c3p0使用_JavaWeb学习过程 之c3p0的使用

这几天在学习使用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 importjava.beans.PropertyVetoException;2 importjava.sql.Connection;3 importjava.sql.SQLException;4

5 importcom.mchange.v2.c3p0.ComboPooledDataSource;6

7

8 public classJDBCUtils {9 private static Connection conn=null;10 private static ComboPooledDataSource comboPooledDataSource=newComboPooledDataSource();11

12 public staticConnection 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 block

24 e.printStackTrace();25 } catch(SQLException e) {26 //TODO Auto-generated catch block

27 e.printStackTrace();28 }29 returnconn;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 importjava.sql.Connection;2 importjava.sql.SQLException;3

4 importcom.mchange.v2.c3p0.ComboPooledDataSource;5

6 public classJdbcUtils {7

8 /**

9 * 释放链接10 *@paramconnection11 */

12 public static voidreleaseConnection(Connection connection){13 if(connection!=null){14 try{15 connection.close();16 } catch(SQLException e) {17 //TODO Auto-generated catch block

18 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 *@return

34 *@throwsException35 */

36 public static Connection getConnection() throwsException{37 returndataSource.getConnection();38 }39 }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值