>  기사  >  데이터 베이스  >  C3P0 연결 풀에 대한 자세한 소개

C3P0 연결 풀에 대한 자세한 소개

零下一度
零下一度원래의
2017-07-27 15:48:262085검색

C3P0 연결 풀

C3P0 연결 풀 생성을 위한 도구 클래스
* 연결을 위한 표준 인터페이스:
* javax.sql.DataSource 인터페이스
* 인터페이스의 구현 클래스 객체
* ComboPooledDataSource
* 멤버에 ComboPooledDataSource 객체 생성 location
* 정적 코드 블록을 사용하여 ComboPooledDataSource에 대한 4개의 대용량 데이터 연결 정보 설정
* Connection 개체를 반환하는 정적 메서드 생성
* 리소스를 해제하는 정적 메서드 생성

 1 public class C3P0Utils { 2     //成员位置创建ComboPooledDataSource对象 3     private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4      5     //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6     static{ 7         try { 8             dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9             dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10             dataSource.setUser("root");11             dataSource.setPassword("root");12         } catch (Exception e) {13             throw new RuntimeException("设置连接信息失败!");14         }15     }16     17     //创建一个静态方法返回Connection对象18     public static Connection getConnection(){19         try {20             return dataSource.getConnection();21         } catch (SQLException e) {22             throw new RuntimeException("获取数据库连接信息失败!");23         }24     }25     26     //定义一个释放资源的方法27         public static void close(ResultSet rs,Statement stat,Connection conn){28             if(rs!=null){29                 try {30                     rs.close();31                 } catch (SQLException e) {32                     e.printStackTrace();33                 }34             }35             if(stat !=null){36                 try {37                     stat.close();38                 } catch (SQLException e) {39                     e.printStackTrace();40                 }41             }42             if(conn != null){43                 try {44                     conn.close();45                 } catch (SQLException e) {46                     e.printStackTrace();47                 }48             }49         }50 }

읽기용 C3P0 도구 클래스 생성 XML 구성 파일

 1 public class C3P0UtilsReadXML { 2     //成员位置创建ComboPooledDataSource对象 3     private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4      5     //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6     /*static{ 7         try { 8             dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9             dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10             dataSource.setUser("root");11             dataSource.setPassword("root");12         } catch (Exception e) {13             throw new RuntimeException("设置连接信息失败!");14         }15     }*/16     17     //创建一个返回ComboPooledDataSource的方法18     public static DataSource getDataSource(){19         return dataSource;20     }21     22     //创建一个静态方法返回Connection对象23     public static Connection getConnection(){24         try {25             return dataSource.getConnection();26         } catch (SQLException e) {27             throw new RuntimeException("获取数据库连接信息失败!");28         }29     }30     31     //定义一个释放资源的方法32         public static void close(ResultSet rs,Statement stat,Connection conn){33             if(rs!=null){34                 try {35                     rs.close();36                 } catch (SQLException e) {37                     e.printStackTrace();38                 }39             }40             if(stat !=null){41                 try {42                     stat.close();43                 } catch (SQLException e) {44                     e.printStackTrace();45                 }46             }47             if(conn != null){48                 try {49                     conn.close();50                 } catch (SQLException e) {51                     e.printStackTrace();52                 }53             }54         }55 }

DBCP 연결 풀

DBCP 연결 풀을 생성하기 위한 도구 클래스
* 연결을 위한 표준 인터페이스:
* javax.sql.DataSource 인터페이스
* 인터페이스의 구현 클래스 개체
* BasicDataSource
* getConnection 메서드 재정의

 1 public class DBCPUtils { 2     //创建连接池的实现类对象 3     private static BasicDataSource dataSource = new BasicDataSource(); 4      5     //设置连接数据库的4大变量,使用BasicDataSource中的set方法设置 6     static{ 7         //设置注册的驱动信息 8         dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 9         //设置Url10         dataSource.setUrl("jdbc:mysql://localhost:3306/mybase4");11         //设置用户名12         dataSource.setUsername("root");13         //设置密码14         dataSource.setPassword("root");15         //可选信息16         //dataSource.setInitialSize(100);17         //dataSource.setMaxActive(1000);18     }19     20     //创建获取数据库连接对象的方法21     public static Connection getConnection(){22         try {23             return dataSource.getConnection();24         } catch (SQLException e) {25             throw new RuntimeException("获取数据库连接对象失败");26         }27     }28     29     //定义一个释放资源的方法30     public static void  close(ResultSet rs,Statement stat,Connection conn){31         if(rs!=null){32             try {33                 rs.close();34             } catch (SQLException e) {35                 e.printStackTrace();36             }37         }38         if(stat !=null){39             try {40                 stat.close();41             } catch (SQLException e) {42                 e.printStackTrace();43             }44         }45         if(conn != null){46             try {47                 conn.close();48             } catch (SQLException e) {49                 e.printStackTrace();50             }51         }52     }53 }

구성 파일 읽는 방법

 1 /* 2  * 创建DBCP连接池工具类 3  * 使用读取配置文件的方式 4  * DBCP中有一个工厂类BasicDataSourceFactory 5  * 工厂类中有一个静态方法 6  * static DataSource createDataSource(Properties prop) 7  * 此方法返回的就是DataSource接口的实现类对象BasicDataSource 8  * 
 9  * 创建Propertis集合+IO技术读取配置文件10  * 把配置文件传入BasicDataSourceFactory静态方法createDataSource中11  */12 public class DBCPUtilsReadConfig {13     //创建DataSource变量14     private static DataSource dataSource;15     16     static{17         try {18             //创建Propertis集合+IO技术读取配置文件19             //使用类加载器,扫描包下的文件20             InputStream is = DBCPUtilsReadConfig.class.getClassLoader()21                     .getResourceAsStream("dbcpconfig.properties");22             //创建Propertis集合23             Properties prop = new Properties();24             prop.load(is);25             //把配置文件传入BasicDataSourceFactory静态方法createDataSource中26             dataSource = BasicDataSourceFactory.createDataSource(prop);27         } catch (Exception e) {28             throw new RuntimeException("读取配置文件失败");29         }30     }31     32     //创建获取数据库连接对象的方法33     public static Connection getConnection(){34         try {35             return dataSource.getConnection();36         } catch (SQLException e) {37             throw new RuntimeException("获取数据库连接对象失败");38         }39     }40     41     //定义一个释放资源的方法42     public static void  close(ResultSet rs,Statement stat,Connection conn){43         if(rs!=null){44             try {45                 rs.close();46             } catch (SQLException e) {47                 e.printStackTrace();48             }49         }50         if(stat !=null){51             try {52                 stat.close();53             } catch (SQLException e) {54                 e.printStackTrace();55             }56         }57         if(conn != null){58             try {59                 conn.close();60             } catch (SQLException e) {61                 e.printStackTrace();62             }63         }64     }65 }


* DBUtils 도구 클래스를 사용하여 데이터베이스 테이블을 추가, 삭제, 수정 및 확인합니다
* DBUtils 도구 클래스 기능: JDBC 개발 단순화(6단계)
*
* DBUtils에는 3개의 핵심 클래스가 있습니다.
* 1.QueryRunner: QueryRunner의 메소드를 사용하여 데이터베이스를 추가, 삭제, 수정 및 쿼리합니다
* 2.DbUtils: 리소스를 해제하는 많은 메소드를 제공합니다
* 3.ResultSetHandler 인터페이스: 쿼리 결과 집합을 처리하는 메서드 제공
*
* QueryRunner 클래스
* 생성자 메서드:
* QueryRunner() 빈 매개 변수 생성자
* 업데이트 및 쿼리 메서드 호출 시 Connection 개체를 전달해야 함
* QueryRunner(DataSource ds ) DataSource 데이터베이스 연결 풀을 사용하는 생성자 메서드
* 호출 업데이트 쿼리 메서드를 호출하면 QueryRunner는 DataSource 구현 클래스 개체에서 데이터베이스 연결 개체를 자동으로 가져오고 사용 후 자동으로 반환합니다.
* 멤버 메서드:
* 멤버 메서드 실행 추가, 삭제, 수정을 수행하는 SQL
* int update(Connection conn, String sql, Object ... params) 추가, 삭제, 수정을 수행하는 데 사용되는 SQL
* int update(String sql, Object... params) 사용되는 SQL 추가, 삭제 및 수정을 수행하려면
* 매개변수:
* 연결 conn: 데이터베이스 연결 개체
* 문자열 sql: 연결된 ​​sql 문에서는 ? 자리 표시자를 사용할 수 있습니다.
* 개체... 매개변수: ? 자리 표시자에는 Object[]를 사용할 수 있습니다.
* 반환 값:
* int: 실행된 유효한 행 수
* 쿼리 멤버 메서드 실행
* T query(Connection conn, String sql, ResultSetHandler rsh, Object... params)
* T query(String sql, ResultSetHandler rsh, Object ... params)
* 매개변수:
* Connection conn: 데이터베이스 연결 객체
* String sql: spliced ​​​​sql 문에서 자리 표시자를 사용할 수 있습니다.
* Object... params: 자리 표시자의 실제 매개 변수는 Object[]
를 사용할 수 있습니다. * ResultSetHandler 쿼리 후 결과 집합을 저장하는 데 사용됩니다. ResultSetHandler 구현 클래스 객체의 유형
* 반환 값:
* T: 전달된 ResultSetHandler 구현 클래스가 다르며, 반환된 결과 집합도 다릅니다. 제네릭을 사용하면 전달되는 결과 집합에 관계없이 해당 유형이 달라집니다. 반환됩니다.

위 내용은 C3P0 연결 풀에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:MySQL 소개다음 기사:MySQL 소개