java jdbc

1.jdbc连接数据库,就这样子

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection conn = DriverManager.getConnection(jdbcUrl);

2.通过传入jdbc url用Drivermanager.getConnection(jdbcurl)连接数据库,

注意:一次Drivermanager.getConnection(jdbcurl)获得只是一个connection,并不能满足高并发情况。因为connection不是线程安全的,一个connection对应的是一个事物。

3.所以数据库连接池,是多次Drivermanager.getConnection(jdbcurl),获取多个connection放入hashmap中。

4.每次获得connection都需要浪费cpu资源和内存资源,是很浪费资源的。所以诞生了数据库连接池。

5.数据库连接池部分源码:

注意pool.getConnection(),都是先从threadlocal里面拿的,如果threadlocal里面有,则用,保证线程里的多个dao操作,用的是同一个connection,以保证事务。

如果新线程,则将新的connection放在threadlocal里,再get给到线程。

着重看以下几个方法,说明数据库连接池,是将connection放进threadlocal里的,以保证每个线程从连接池中获得的都是线程自己的connection。

 

    1.  // 将线程和连接绑定,保证事务能统一执行  
    2.  成员变量   private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); 
posted @ 2018-05-17 17:30  He_quotes  阅读(55)  评论(0)    收藏  举报