为了以后方便使用特地对c3p0写了个帮助类,特记录在此:
package db.c3p0;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* c3p0数据连接池
* * 参数说明:
* driveClassName:JDBC驱动类的完整的名称;
* maxActive:连接池中保留的最大连接数;
* minActive:连接池中保留的最小连接数;
* initialPoolSize:同时能够从连接池中被分配的可用实例的最小数;
* maxWait:最大超时时间,以毫秒计;
* password:用户密码;
* url:到JDBC的URL连接;
* user:用户名称;
* maxIdleTime:最大空闲时间,多少秒内未使用则连接被丢弃。若为0则永不丢弃;
* acquireIncrement:当连接池中的连接耗尽的时候c3p0一次同时获取的连接数;
* idleConnectionTestPeriod:每多少秒检查所有连接池中的空闲连接;
* acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试的次数;
* testConnectionOnCheckout:因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验 其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能;
* breakAfterAcquireFailure:获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。;
* maxStatements:JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。;
* @author dxz
*
*/
public class DBHelp {
private static ComboPooledDataSource dataSource = null;
private static String username = "jspcms";
private static String password = "jspcms";
private static String url = "jdbc:mysql://localhost:3306/jspcms";
private static String drive = "com.mysql.jdbc.Driver";
private static int maxActive = 30;
private static int minActive = 2;
private static int initialPoolSize = 2;
private static int maxIdleTime = 60;
private static int acquireIncrement = 5;
private static int maxStatements = 0;
private static int idleConnectionTestPeriod = 60;
private static int acquireRetryAttempts = 30;
private static boolean breakAfterAcquireFailure = true;
private static boolean testConnectionOnCheckout = false;
private Connection conn = null;
/**
* 初始化数据源
* @throws Exception
*/
private void init() throws Exception{
if(dataSource == null){
dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(this.drive);
dataSource.setJdbcUrl(this.url);
dataSource.setUser(this.username);
dataSource.setPassword(this.password);
dataSource.setMaxPoolSize(this.maxActive);
dataSource.setMinPoolSize(this.minActive);
dataSource.setInitialPoolSize(this.initialPoolSize);
dataSource.setMaxIdleTime(this.maxIdleTime);
dataSource.setAcquireIncrement(this.acquireIncrement);
dataSource.setMaxStatements(this.maxStatements);
dataSource.setIdleConnectionTestPeriod(this.idleConnectionTestPeriod);
dataSource.setAcquireRetryAttempts(this.acquireRetryAttempts);
dataSource.setBreakAfterAcquireFailure(this.breakAfterAcquireFailure);
dataSource.setTestConnectionOnCheckout(this.testConnectionOnCheckout);
}
}
/**
* 获取数据库连接
* @return
* @throws Exception
*/
public Connection getConnection() throws Exception{
try {
if(dataSource == null){
this.init();
}
this.conn = (Connection) dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw e;
}
return conn;
}
/**
*关闭数据库连接
*/
public void closeConnection(){
if(this.conn != null){
try {
this.conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
高效的数据库操作通常会采用连接池技术,如C3P0、HikariCP或Druid等,它们预先创建并管理一组数据库连接,避免频繁的创建和关闭连接,提高性能。JDBC工具类可能集成了连接池的配置和管理,方便开发者使用。 5. **...
本篇文章将详细讲解标题“常用jar包整理”中提到的一些核心JAR包,包括log4j、Oracle驱动、MySQL驱动、commons、jstl、servlet、dbcp和c3p0,以及它们在实际开发中的应用。 1. **log4j**: log4j是Apache的一个开源...
12. **数据库相关**:SQL基础、事务处理、索引优化、JDBC操作等,特别是数据库连接池的使用,如C3P0、Druid、HikariCP等。 这份"2010整理java面试大全"应该包含这些领域的具体问题和解答,通过学习和掌握,能有效...
SQL语句的熟练使用,包括DML(增删改查)、DDL(定义表结构)、索引、事务处理等,以及数据库连接池的原理和使用,如C3P0、DBCP、HikariCP等。 总的来说,"张孝祥正在整理Java就业面试题大全(结业版)"涵盖了Java...
例如,可能包含MySQL、Oracle或其他数据库的JDBC驱动,以及像C3P0、DBCP或HikariCP这样的连接池实现。 **common目录** 这个目录通常存放通用的、跨框架的工具类或库,比如Apache Commons库,它提供了各种实用工具类...
11. **数据库操作**:SQL语言的基本操作,如CRUD,以及连接池的使用,如C3P0、Druid、HikariCP等。 12. **框架知识**:Spring框架的核心原理,如IoC(控制反转)、AOP(面向切面编程),以及Spring Boot和Spring ...
11. **数据库操作**:JDBC基础、SQL语句、连接池(如C3P0、HikariCP)、事务处理和NoSQL数据库(如MongoDB)也可能出现在面试中。 12. **网络编程**:TCP/IP协议、HTTP协议的理解,以及Socket编程和WebSocket的使用...
10. **数据库相关**:JDBC(Java Database Connectivity)API的使用,SQL查询,事务管理,连接池(如C3P0、HikariCP等)。 11. **工具**:Maven或Gradle构建工具的使用,Git版本控制,IDEA或Eclipse等开发工具的...
10. **数据库相关**:SQL语句优化、JDBC操作、连接池(如C3P0、Druid、HikariCP)、事务隔离级别、索引原理。 11. **网络编程**:TCP/IP协议、HTTP协议、Socket编程、Web服务器原理。 12. **算法与数据结构**:...
10. **数据库操作**:JDBC API的使用,SQL语句编写,事务处理(ACID特性),连接池(C3P0、DBCP、HikariCP),以及ORM框架如Hibernate和MyBatis的原理与配置。 11. **Spring框架**:IoC(控制反转)与DI(依赖注入...
例如,消息队列(如RabbitMQ、Kafka)用于异步处理和解耦,缓存中间件(如Redis、Memcached)提升数据访问速度,数据库连接池(如HikariCP、C3P0)优化数据库操作,以及负载均衡器(如Nginx、HAProxy)确保服务的高...
熟悉SQL语句、连接池管理(如C3P0、DBCP)以及预编译语句能提升数据库操作效率。 8. **框架应用**:Spring框架是Java企业级应用的常用框架,它提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构等...
10. **数据库操作**:熟悉SQL语言,掌握JDBC操作数据库的基本步骤,了解数据库事务和隔离级别,理解连接池(如C3P0、DBCP、HikariCP)的使用。 11. **框架应用**:对Spring框架的依赖注入、AOP(面向切面编程)、...
11. **数据库操作**:SQL语言的基本操作,如查询、增删改,事务的ACID特性,索引的原理和优化,以及连接池的使用(如C3P0、Druid、HikariCP)。 12. **微服务架构**:Docker容器化技术,RESTful API设计原则,服务...
- 数据库连接池:C3P0、DBCP、HikariCP等的使用和配置。 - JDBC操作:SQL语句执行,结果集处理,事务管理。 以上只是Java面试中可能会涉及的一部分知识点,实际面试中还可能包括更高级的主题,如NIO、并发容器、...
13. **数据库操作**:JDBC基础、连接池(C3P0、DBCP、HikariCP)、SQL语言、预编译语句、存储过程。 14. **数据结构与算法**:栈、队列、树、图、排序算法(冒泡、选择、插入、快速、归并、希尔、堆)、查找算法...
掌握数据库连接池的使用,如C3P0或Apache DBCP,能提升性能和资源管理。 7. **EJB(Enterprise JavaBeans)**:EJB是J2EE中的组件模型,包括会话bean、实体bean和消息驱动bean,用于实现业务逻辑。虽然现代开发中轻...
DbUtil是Java中常用的数据库操作工具类,它简化了JDBC的基本操作,如数据库连接、SQL执行、结果集处理等。通过DbUtil,开发者可以更方便地进行数据库操作,而无需直接编写繁琐的JDBC代码。 在Web开发中,JDBC(Java...
理解连接池的概念,如C3P0或DBCP,能够提高应用性能。 4. **MVC(Model-View-Controller)**:设计模式,广泛应用于Web开发中,将业务逻辑、数据展示和用户交互分离。在JavaWeb中,Struts、Spring MVC等框架就是...
C3P0 MyCat Sharding-JDBC Sharding-Sphere 五、操作系统 进程/线程 并发/锁 内存管理和调度 I/O原理 六、设计模式 单例 工厂 代理 策略 模板方法 观察者 适配器 责任链 建造者 七、开发工具 IDEA (0/19) Eclip