`
xianzhideng
  • 浏览: 61689 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

整理的c3p0工具类

    博客分类:
  • J2SE
阅读更多

为了以后方便使用特地对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();
			}
		}
	}
}

 

分享到:
评论

相关推荐

    jdbc工具整理

    高效的数据库操作通常会采用连接池技术,如C3P0、HikariCP或Druid等,它们预先创建并管理一组数据库连接,避免频繁的创建和关闭连接,提高性能。JDBC工具类可能集成了连接池的配置和管理,方便开发者使用。 5. **...

    常用jar包整理

    本篇文章将详细讲解标题“常用jar包整理”中提到的一些核心JAR包,包括log4j、Oracle驱动、MySQL驱动、commons、jstl、servlet、dbcp和c3p0,以及它们在实际开发中的应用。 1. **log4j**: log4j是Apache的一个开源...

    2010整理java面试大全

    12. **数据库相关**:SQL基础、事务处理、索引优化、JDBC操作等,特别是数据库连接池的使用,如C3P0、Druid、HikariCP等。 这份"2010整理java面试大全"应该包含这些领域的具体问题和解答,通过学习和掌握,能有效...

    张孝祥正在整理Java就业面试题大全(结业版)

    SQL语句的熟练使用,包括DML(增删改查)、DDL(定义表结构)、索引、事务处理等,以及数据库连接池的原理和使用,如C3P0、DBCP、HikariCP等。 总的来说,"张孝祥正在整理Java就业面试题大全(结业版)"涵盖了Java...

    非常精简的s2sh jar包整理,struts2.3.4,hibernate3.6.10,spring3.1.0

    例如,可能包含MySQL、Oracle或其他数据库的JDBC驱动,以及像C3P0、DBCP或HikariCP这样的连接池实现。 **common目录** 这个目录通常存放通用的、跨框架的工具类或库,比如Apache Commons库,它提供了各种实用工具类...

    java面试整理资料

    11. **数据库操作**:SQL语言的基本操作,如CRUD,以及连接池的使用,如C3P0、Druid、HikariCP等。 12. **框架知识**:Spring框架的核心原理,如IoC(控制反转)、AOP(面向切面编程),以及Spring Boot和Spring ...

    近年JAVA面试题整理

    11. **数据库操作**:JDBC基础、SQL语句、连接池(如C3P0、HikariCP)、事务处理和NoSQL数据库(如MongoDB)也可能出现在面试中。 12. **网络编程**:TCP/IP协议、HTTP协议的理解,以及Socket编程和WebSocket的使用...

    java英语面试题大集合(网上搜索整理).doc

    10. **数据库相关**:JDBC(Java Database Connectivity)API的使用,SQL查询,事务管理,连接池(如C3P0、HikariCP等)。 11. **工具**:Maven或Gradle构建工具的使用,Git版本控制,IDEA或Eclipse等开发工具的...

    Java在面试中的高频考点多年整理出来的面试资料.zip

    10. **数据库相关**:SQL语句优化、JDBC操作、连接池(如C3P0、Druid、HikariCP)、事务隔离级别、索引原理。 11. **网络编程**:TCP/IP协议、HTTP协议、Socket编程、Web服务器原理。 12. **算法与数据结构**:...

    整理齐全的java面试题大全

    10. **数据库操作**:JDBC API的使用,SQL语句编写,事务处理(ACID特性),连接池(C3P0、DBCP、HikariCP),以及ORM框架如Hibernate和MyBatis的原理与配置。 11. **Spring框架**:IoC(控制反转)与DI(依赖注入...

    java高级教程分布式多线程中间件-网盘整理合集

    例如,消息队列(如RabbitMQ、Kafka)用于异步处理和解耦,缓存中间件(如Redis、Memcached)提升数据访问速度,数据库连接池(如HikariCP、C3P0)优化数据库操作,以及负载均衡器(如Nginx、HAProxy)确保服务的高...

    java项目经验整理.zip

    熟悉SQL语句、连接池管理(如C3P0、DBCP)以及预编译语句能提升数据库操作效率。 8. **框架应用**:Spring框架是Java企业级应用的常用框架,它提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构等...

    不定期收集整理Java相关面试题.zip

    10. **数据库操作**:熟悉SQL语言,掌握JDBC操作数据库的基本步骤,了解数据库事务和隔离级别,理解连接池(如C3P0、DBCP、HikariCP)的使用。 11. **框架应用**:对Spring框架的依赖注入、AOP(面向切面编程)、...

    java面试题详细整理

    11. **数据库操作**:SQL语言的基本操作,如查询、增删改,事务的ACID特性,索引的原理和优化,以及连接池的使用(如C3P0、Druid、HikariCP)。 12. **微服务架构**:Docker容器化技术,RESTful API设计原则,服务...

    JAVA面试题2023整理一期

    - 数据库连接池:C3P0、DBCP、HikariCP等的使用和配置。 - JDBC操作:SQL语句执行,结果集处理,事务管理。 以上只是Java面试中可能会涉及的一部分知识点,实际面试中还可能包括更高级的主题,如NIO、并发容器、...

    Java 283页技术文档整理.zip

    13. **数据库操作**:JDBC基础、连接池(C3P0、DBCP、HikariCP)、SQL语言、预编译语句、存储过程。 14. **数据结构与算法**:栈、队列、树、图、排序算法(冒泡、选择、插入、快速、归并、希尔、堆)、查找算法...

    J2EE全部要学知识整理

    掌握数据库连接池的使用,如C3P0或Apache DBCP,能提升性能和资源管理。 7. **EJB(Enterprise JavaBeans)**:EJB是J2EE中的组件模型,包括会话bean、实体bean和消息驱动bean,用于实现业务逻辑。虽然现代开发中轻...

    阶段总结源码.zip

    DbUtil是Java中常用的数据库操作工具类,它简化了JDBC的基本操作,如数据库连接、SQL执行、结果集处理等。通过DbUtil,开发者可以更方便地进行数据库操作,而无需直接编写繁琐的JDBC代码。 在Web开发中,JDBC(Java...

    javaWeb最新学习文档最完整的整理版(上)

    理解连接池的概念,如C3P0或DBCP,能够提高应用性能。 4. **MVC(Model-View-Controller)**:设计模式,广泛应用于Web开发中,将业务逻辑、数据展示和用户交互分离。在JavaWeb中,Struts、Spring MVC等框架就是...

    java8集合源码分析-The-Road-To-Bald-Man:Java技能加点,秃顶之路

    C3P0 MyCat Sharding-JDBC Sharding-Sphere 五、操作系统 进程/线程 并发/锁 内存管理和调度 I/O原理 六、设计模式 单例 工厂 代理 策略 模板方法 观察者 适配器 责任链 建造者 七、开发工具 IDEA (0/19) Eclip

Global site tag (gtag.js) - Google Analytics