在使用开发基于数据库的web程序时,传统的模式基本是按如下步骤: java
这种模式开发,存在的问题:mysql
JDBC 的数据库链接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口一般由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供实现:web
DataSource 一般被称为数据源,它包含链接池和链接池管理两个部分,习惯上也常常把 DataSource 称为链接池.sql
(1)基本用法数据库
/** * 使用 DBCP数据库链接池 * 1.加入jar包: * commons-dbcp2-2.1.1.jar * commons-pool2-2.4.2.jar * 2.建立数据库链接 * 3.为数据源实例指定必需的属性 * 4.从数据源中获取数据库链接 * @throws SQLException */ @Test public void test17() throws SQLException { BasicDataSource dataSource = null; //1.建立DBPC数据源实例 dataSource = new BasicDataSource(); //2.为数据源实例指定必需的属性 dataSource.setUsername("root"); dataSource.setPassword("12345"); dataSource.setUrl("jdbc:mysql://localhost:3306/jdbctest"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //3.指定数据库的一些可选属性 //3.1 指定数据库链接池初始化链接数的个数 dataSource.setInitialSize(10); //3.2 指定最大链接数,同一时间能够同时向数据库申请的链接数 dataSource.setMaxTotal(50); //3.3 其余... //3.从数据源中获取数据库链接 Connection connection = dataSource.getConnection(); System.out.println(connection.getClass()); }
(2)更好的使用方法服务器
/** * 1. 加载 dbcp的 properties配置文件:配置文件中的键须要来自BasicDataSource的属性 * 2. 调用 BasicDataSourceFactory的 createDataSource方法才建立数据库链接 * 3. 从 DataSource实例中获取数据库链接。 * * @throws Exception */ @Test public void test18() throws Exception { Properties properties = new Properties(); InputStream in = JdbcTest.class.getClassLoader().getResourceAsStream("dbcp.properties"); properties.load(in); DataSource dataSource = BasicDataSourceFactory.createDataSource(properties); //BasicDataSource basicDataSource = (BasicDataSource) dataSource; }
(1)基本用法函数
(2)更好的用法性能
/** * 1. 建立 c3p0-config.xml 文件, * 参考帮助文档中 Appendix B: Configuation Files 的内容 * 2. 建立 ComboPooledDataSource 实例; * DataSource dataSource = * new ComboPooledDataSource("helloc3p0"); * 3. 从 DataSource 实例中获取数据库链接. */ @Test public void testC3poWithConfigFile() throws Exception{ DataSource dataSource = new ComboPooledDataSource("helloc3p0"); System.out.println(dataSource.getConnection()); ComboPooledDataSource comboPooledDataSource = (ComboPooledDataSource) dataSource; System.out.println(comboPooledDataSource.getMaxStatements()); }
附c3p0-config.xml:学习
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-config name="helloc3p0"> <!-- 指定链接数据源的基本属性 --> <property name="user">root</property> <property name="password">1230</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///atguigu</property> <!-- 若数据库中链接数不足时, 一次向数据库服务器申请多少个链接 --> <property name="acquireIncrement">5</property> <!-- 初始化数据库链接池时链接的数量 --> <property name="initialPoolSize">5</property> <!-- 数据库链接池中的最小的数据库链接数 --> <property name="minPoolSize">5</property> <!-- 数据库链接池中的最大的数据库链接数 --> <property name="maxPoolSize">10</property> <!-- C3P0 数据库链接池能够维护的 Statement 的个数 --> <property name="maxStatements">20</property> <!-- 每一个链接同时可使用的 Statement 对象的个数 --> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>
JDBC学习笔记:大数据
1. 获取数据库链接 http://my.oschina.net/daowuming/blog/704243
2. 经过Statement执行更新、查询操做 http://my.oschina.net/daowuming/blog/704384
3. 使用PrepareStatement http://my.oschina.net/daowuming/blog/704432
4. 使用ResultSetMetaData 对象处理结果集元数据 http://my.oschina.net/daowuming/blog/704487
5. 使用DatabaseMetaData获取数据库信息 http://my.oschina.net/daowuming/blog/704553
6. BLOB http://my.oschina.net/daowuming/blog/704593
7. 处理事务与隔离级别 http://my.oschina.net/daowuming/blog/704611
8. 批量处理 http://my.oschina.net/daowuming/blog/704641
9. 数据库链接池 ----当前----
10. 调用函数与存储过程 http://my.oschina.net/daowuming/blog/704813