【JDBC】1.连接池DataSource/Connection Pool

1.为什么必须使用数据库连接池:

    普通的JDBC数据库连接(Connectiond对象)使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间),数据库的连接是比较昂贵的(创建的成本比较大)。

    需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。

    数据库的连接资源并没有得到很好的重复利用.若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。

2.在Java中,连接池使用javax.sql.DataSource接口来表示连接池.

DataSource(数据源)和连接池(Connection Pool)是同一个.

注意:DataSource仅仅只是一个接口,由各大服务器厂商来实现(Tomcat,JBoss).

常用的DataSource的实现:

  DBCP:  Spring框架推荐的

  C3P0:  Hibernate框架推荐的

  druid: 阿里巴巴的连接池(号称Java语言中性能最好的连接池).

3.使用连接池和不使用连接池的区别在哪里?如何获取Connection对象:

没有使用连接池:Connection conn = DriverManager.getConnection(url,username,password);

使用连接池:Connection conn = DataSource对象.getConnection();

  只要获取了Connection对象,接下来的操作和以前是一模一样的.

  关键在于:如何创建DataSource对象.

4.如何释放Connection对象(Connection对象.close()):

没有使用连接池: 是和数据库服务器断开.

使用连接池: 是把Connection对象返还给连接池中,并没有和数据库服务器断开.

Java中数据库连接池原理机制的详细讲解 

可以参考看下。

posted @ 2017-04-19 16:49  Qingyun_Qearl  阅读(878)  评论(0)    收藏  举报