<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.16</version> </dependency> </dependencies>1. Druid data source connection pool technology
package com.csdn.jdbc; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; import java.sql.SQLException; // Demonstrate data source connection pool druid Druid data source connection pool technology public class DataSourceConnectPool { public static void main(String[] args) throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///fruitdb"); dataSource.setUsername("root"); dataSource.setPassword("123456"); dataSource.setInitialSize(5); //Initialization quantity dataSource.setMaxActive(10); //Maximum number of activations dataSource.setMaxWait(5000); //Maximum waiting time for (int count = 1; count <= 11; count + + ) { DruidPooledConnection conn = dataSource.getConnection(); System.out.println(conn); } } } D:\Java\jdk-17\bin\java.exe com.csdn.jdbc.DataSourceConnectPool October 27, 2023 12:51:59 PM com.alibaba.druid.pool.DruidDataSource info Information: {dataSource-1} inited com.mysql.cj.jdbc.ConnectionImpl@408d971b com.mysql.cj.jdbc.ConnectionImpl@6c6cb480 com.mysql.cj.jdbc.ConnectionImpl@3c46e67a com.mysql.cj.jdbc.ConnectionImpl@c730b35 com.mysql.cj.jdbc.ConnectionImpl@206a70ef com.mysql.cj.jdbc.ConnectionImpl@292b08d6 com.mysql.cj.jdbc.ConnectionImpl@22555ebf com.mysql.cj.jdbc.ConnectionImpl@36ebc363 com.mysql.cj.jdbc.ConnectionImpl@45752059 com.mysql.cj.jdbc.ConnectionImpl@34e9fd99 Exception in thread "main" com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 5003, active 10, maxActive 10, creating 0 at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1840) at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1470) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1450) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1440) at com.csdn.jdbc.DataSourceConnectPool.main(DataSourceConnectPool.java:22) Process finished with exit code 1
- The 10 connection objects obtained are all different, and the maximum number of activations is 10. If you want to obtain the 11th one, wait for 5 seconds, and the connection object will time out.
package com.csdn.jdbc; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; import java.sql.SQLException; // Demonstrate data source connection pool druid Druid data source connection pool technology public class DataSourceConnectPool { public static void main(String[] args) throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///fruitdb"); dataSource.setUsername("root"); dataSource.setPassword("123456"); dataSource.setInitialSize(5); //Initialization quantity dataSource.setMaxActive(10); //Maximum number of activations dataSource.setMaxWait(5000); //Maximum waiting time for (int count = 1; count <= 11; count + + ) { DruidPooledConnection conn = dataSource.getConnection(); System.out.println(conn); if (count % 4 == 0) { conn.close(); } } } } D:\Java\jdk-17\bin\java.exe October 27, 2023 12:57:41 PM com.alibaba.druid.pool.DruidDataSource info Information: {dataSource-1} inited com.mysql.cj.jdbc.ConnectionImpl@6c6cb480 com.mysql.cj.jdbc.ConnectionImpl@3c46e67a com.mysql.cj.jdbc.ConnectionImpl@c730b35 com.mysql.cj.jdbc.ConnectionImpl@206a70ef com.mysql.cj.jdbc.ConnectionImpl@206a70ef com.mysql.cj.jdbc.ConnectionImpl@292b08d6 com.mysql.cj.jdbc.ConnectionImpl@22555ebf com.mysql.cj.jdbc.ConnectionImpl@36ebc363 com.mysql.cj.jdbc.ConnectionImpl@36ebc363 com.mysql.cj.jdbc.ConnectionImpl@45752059 com.mysql.cj.jdbc.ConnectionImpl@34e9fd99
2. Data source connection pool, load jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql:///fruitdb jdbc.user=root jdbc.pwd=123456 jdbc.initial_size=5 jdbc.max_active=10 jdbc.max_wait=5000package com.csdn.jdbc; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.Properties; //Demo data source connection pool loading jdbc.properties public class DataSourceConnectPoolProperties { public static void main(String[] args) throws SQLException, IOException { InputStream inputStream = DataSourceConnectPoolProperties.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(inputStream); DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(properties.getProperty("jdbc.driver")); dataSource.setUrl(properties.getProperty("jdbc.url")); dataSource.setUsername(properties.getProperty("jdbc.user")); dataSource.setPassword(properties.getProperty("jdbc.pwd")); dataSource.setInitialSize(Integer.parseInt(properties.getProperty("jdbc.initial_size"))); //Initialization quantity dataSource.setMaxActive(Integer.parseInt(properties.getProperty("jdbc.max_active"))); //Maximum number of activations dataSource.setMaxWait(Integer.parseInt(properties.getProperty("jdbc.max_wait"))); //Maximum waiting time for (int count = 1; count <= 11; count + + ) { DruidPooledConnection conn = dataSource.getConnection(); System.out.println(conn); if (count % 4 == 0) { conn.close(); } } } }3. Data source connection pool, load the upgraded version of jdbc.properties, the key is fixed and consistent with the properties in the connection pool factory
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///fruitdb username=root password=123456 initialSize=5 maxActive=10 maxWait=1000package com.csdn.jdbc; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.util.Properties; //Demonstrate data source connection pool. Load jdbc.properties. The key is fixed and consistent with the properties in the connection pool factory. public class DataSourceConnectPoolPropertiesFactory { public static void main(String[] args) throws Exception { InputStream inputStream = DataSourceConnectPoolPropertiesFactory.class.getClassLoader().getResourceAsStream("jdbc2.properties"); Properties properties = new Properties(); properties.load(inputStream); DataSource dataSource = DruidDataSourceFactory.createDataSource(properties); for (int count = 1; count <= 11; count + + ) { Connection conn = dataSource.getConnection(); System.out.println(conn); if (count % 4 == 0) { conn.close(); } } } }
The knowledge points of the article match the official knowledge files, and you can further learn relevant knowledge. Java skill treeUsing JDBC to operate databasesJDBC Overview 138432 people are learning the system