Java文档阅读笔记-C3P0连接池的使用
生活随笔
收集整理的這篇文章主要介紹了
Java文档阅读笔记-C3P0连接池的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇博文如何在應用程序中使用和配置C3P0
prom.xml如下:
<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.5</version> </dependency>數據庫使用MySQL,這個例子連接knpcode庫,并且檢索EMPLOYEE表,這個EMPOLYEE表包含的域有ID,FIREST_NAME,LAST_NAME以及DEPARTMENT。
通過實例化ComboPooledDataSource類來創建C3P0連接池。
下面是一些數據庫相關的配置:
acquireIncrement:如果連接池中的連接被使用殆盡,將會以多少的數量進行增加,默認值為3。
initialPoolSize:程序啟動時連接池的數量,默認為3。
maxPoolSize:最大連接數,默認為15.
maxIdleTime:幾秒未使用的連接就會被丟棄,默認為0,不丟棄。
minPoolSize:連接池中最小的數量。
數據庫和鏈接池相關的配置都在db.properties文件中:
DB.DRIVER_CLASS=com.mysql.cj.jdbc.Driver DB.DB_URL=jdbc:mysql://localhost:3306/knpcode DB.DB_USER=root DB.DB_PASSWORD=admin DB.INITIAL_POOL_SIZE=5 DB.MAX_POOL_SIZE=5下面是創建ComboPooledDataSource相關的代碼:
import java.beans.PropertyVetoException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource;public class DSCreator {private static ComboPooledDataSource pooledDS;static {try {pooledDS = new ComboPooledDataSource();Properties properties = new Properties();// Loading properties file from classpathInputStream inputStream = DSCreator.class.getClassLoader().getResourceAsStream("db.properties");if(inputStream == null){throw new IOException("File not found");}properties.load(inputStream); pooledDS.setDriverClass(properties.getProperty("DB.DRIVER_CLASS"));pooledDS.setJdbcUrl(properties.getProperty("DB.DB_URL"));pooledDS.setUser(properties.getProperty("DB.DB_USER"));pooledDS.setPassword(properties.getProperty("DB.DB_PASSWORD"));pooledDS.setInitialPoolSize(Integer.parseInt(properties.getProperty("DB.INITIAL_POOL_SIZE")));// Default anywaypooledDS.setAcquireIncrement(3);pooledDS.setMaxPoolSize(Integer.parseInt(properties.getProperty("DB.MAX_POOL_SIZE")));}catch(IOException | PropertyVetoException e) {e.printStackTrace();}}public static DataSource getDataSource() {return pooledDS;} }Test類用于創建連接以及獲取DataSource對象以及查詢數據庫:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource;public class DSDemo {public static void main(String[] args) {DSDemo dsDemo = new DSDemo();dsDemo.displayEmployeeById(16);}private void displayEmployeeById(int id){Connection connection = null; String selectSQL = "SELECT * FROM EMPLOYEE WHERE id = ?";PreparedStatement prepStmt = null;try {DataSource ds = DSCreator.getDataSource();connection = ds.getConnection();prepStmt = connection.prepareStatement(selectSQL);prepStmt.setInt(1, id);ResultSet rs = prepStmt.executeQuery();while(rs.next()){System.out.println("id: " + rs.getInt("id"));System.out.println("First Name: " + rs.getString("FIRST_NAME"));System.out.println("Last Name: " + rs.getString("LAST_NAME"));System.out.println("Department: " + rs.getString("DEPARTMENT"));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(connection != null){try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} }?
總結
以上是生活随笔為你收集整理的Java文档阅读笔记-C3P0连接池的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-Spring Boot J
- 下一篇: Spring Boot笔记-使用Rest