JDBC连接池使用

一:一个服务在操作数据库的操作的时候,连接和关闭资源是很消耗系统的资源,不能再每次用户操作数据库的时候,都需要重新建立连接和 关闭连接。

如果这样操作的话,对系统和用户来说,都会消耗大量的资源。所以操作数据库的时候,使用数据库连接池,在服务启动的时候,需要初始化连接,在用户调用的时候,会分配一个连接,用户使用完之后,会归还连接池。

这样就会避免减少系统开销和提升用户的体验。

现在一般使用连接池技术是Apache的dbcp技术。

 工具类:

 1 package pool_demo;
 2 
 3 import org.apache.commons.dbcp2.BasicDataSource;
 4 
 5 
 6 import javax.sql.DataSource;//注意的是扩展的javax 里的DataSource。
 7 
 8 public class Jdbcutils {
 9       private   static BasicDataSource  datasour=new BasicDataSource();
10       static {
11           datasour.setDriverClassName("com.mysql.jdbc.Driver");
12           datasour.setUrl("jdbc:mysql://192.168.147.146:3306/homework_day13");
13           datasour.setUsername("test");
14           datasour.setPassword("123456");
15           datasour.setInitialSize(5);//初始化数据库连接数。
16           datasour.setMaxTotal(12);//最大连接数 需要注意在dbcp2.0的时候没有Maxactive  已经被替换setMaxTotal
17           datasour.setMinIdle(3);//最小空闲连接数。
18           datasour.setMaxIdle(5);//最大空闲连接数。
19           
20       }
21       static DataSource get_Datasource(){
22         return  datasour;
23     }
24 }

测试代码:

 1 package pool_demo;
 2 
 3 import org.apache.commons.dbutils.QueryRunner;
 4 
 5 import org.apache.commons.dbutils.handlers.ArrayListHandler;
 6 
 7 import java.sql.SQLException;
 8 import java.util.List;
 9 
10 public class pool_test {
11     public  static  void  main(String ... args){
12         db_Con.db_test();
13     }
14 }
15 class  db_Con{
16     public  static void db_test(){
17         List<Object[]> rest;
18         try {
19             QueryRunner qr =new QueryRunner(Jdbcutils.get_Datasource());
20             rest= qr.query("select *  from system_user",new ArrayListHandler());
21 
22         }catch (SQLException ex){
23             ex.printStackTrace( );//打印异常输出。
24             throw  new RuntimeException("连接错误"+ex);//这样也可以打印。错误信息比较简明。
25         }
26         for (Object[] obj:rest){for (Object i:obj){System.out.print(i);}
27 
28         }
29     }
30 }
原文地址:https://www.cnblogs.com/evilliu/p/8488761.html