【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中数据库连接池原理机制的详细讲解
可以参考看下。
浙公网安备 33010602011771号