5 java sql database connection-pooling
考虑一个简单的线程池。线程池的主要目的是重用(回收)线程以限制最大线程数并防止删除和创建线程,对吗?
最近我读到(维基百科连接池),在Java EE中,数据库连接由服务器池化,但我不明白为什么?
问题:
提前致谢。
数据库连接池解决方案与您在这里提到的线程池非常相似。以下是主要原因。
Run Code Online (Sandbox Code Playgroud)public static Connection getConnection() { Connection con = null; try { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); DataSource dataSource = (DataSource) envContext.lookup("jdbc/db"); con = dataSource.getConnection(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; }
数据库将假设连接仍然处于活动状态,并且应用程序服务器有责任保持池中的连接处于活动状态(当然通过用户的配置)并避免连接超时。
当你的应用程序代码通过调用connection.close()请求关闭连接时,这个连接并没有关闭,而是实际上返回到池中,以便进一步从池中请求连接将使用这个连接。