JDBC学习6:数据库连接池

本文介绍了数据库连接池的重要性和优势,如解决过多连接导致的服务器崩溃问题以及内存泄漏。提到了三种主流的数据库连接池:Druid、c3p0和DBCP。通过代码示例展示了如何配置和使用c3p0和DBCP,特别强调了Druid数据库连接池的配置和获取连接的方法。示例中包含了从配置文件加载连接池参数的操作。
摘要由CSDN通过智能技术生成

1.简介

①原有方法弊端

  • 数据库连接创建太多造成服务器崩溃
  • 连接需要断开,如果没断开可能造成内存泄漏
    内存泄漏:内存中的对象不能回收
  • 不能控制连接对象数目

②数据库连接池优点

  • 自身有一定数量的连接,可以使用和返还
  • 注意:返回时需要set auto_commit=true(即回复默认状态)

③主流数据库连接池

  • druid

2.代码

//c3p0的数据库连接技术
	@Test
	public void tes1() throws Exception{
		//获取c3p0连接池
		ComboPooledDataSource cpds = new ComboPooledDataSource();
		cpds.setDriverClass( "com.mysql.jdbc.Driver" );           
		cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test?characterEncoding=utf8" );
		cpds.setUser("root");                                  
		cpds.setPassword("abc123");
		//初始连接池的连接数
		cpds.setInitialPoolSize(10);
		
		Connection conn = cpds.getConnection();
		System.out.println(conn);
		
		//销毁c3p0连接池
		DataSources.destroy(cpds);
	}
	
	
	//DBCP的数据库连接技术
	//不推荐应该用配置文件
	@Test
	public void test2() throws SQLException{
		//创建了DBCP数据库连接池
		BasicDataSource source = new BasicDataSource();
		
		//设置基本信息
		source.setDriverClassName("com.mysql.jdbc.Driver");
		source.setUrl( "jdbc:mysql://localhost:3306/test?characterEncoding=utf8");
		source.setUsername("root");
		source.setPassword("abc123");
		
		//设置数据库连接池管理的相关属性
		
		Connection conn =source.getConnection();
		System.out.println(conn);
	}
	//方式二:使用配置文件
	@Test
	public void test3() throws Exception{
		Properties pros = new Properties();
		FileInputStream is = new FileInputStream("src/dbcp.properties");
		pros.load(is);
		//创建了DBCP数据库连接池
		DataSource source = BasicDataSourceFactory.createDataSource(pros);
		
		//设置基本信息

		
		//设置数据库连接池管理的相关属性
		
		Connection conn =source.getConnection();
		System.out.println(conn);
	}
	
	//重点:druid数据库连接池
	@Test
	//1.先加载驱动并buildpath
	//2.写配置文件看找具体的API(配置文件四个信息)
	//3.利用配置文件获取连接
	public void test4() throws Exception{
		Properties pros = new Properties();
		FileInputStream is = new FileInputStream("src/druid.properties");
		pros.load(is);
		DataSource source = DruidDataSourceFactory.createDataSource(pros);
		Connection conn = source.getConnection();
		System.out.println(conn);
		
	}
}
Oracle Database 12c Release 1 (12.1.0.1) JDBC Drivers SimpleFAN Download simplefan.jar (21,048 bytes) - Classes for subscribing to RAC events via ONS; simplefan policy and javadoc JDBC Thin for All Platforms Download demo.tar (686,080 bytes) - JDBC Demos (TAR format) Download demo.zip (614,561 bytes) -JDBC Demos (ZIP format) Download JavaDoc (7,103,997 bytes) Download README Download ojdbc6.jar (3,389,454 bytes) - For use with JDK 6; It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types. Download ojdbc6_g.jar (5,382,573 bytes) - Same as ojdbc6.jar except compiled with "javac -g" and contains tracing code. Download ojdbc6dms.jar (4,033,913 bytes) - Same as ojdbc6.jar, except that it contains instrumentation to support DMS and limited java.util.logging calls. Download ojdbc6dms_g.jar (5,405,632 bytes) - Same as ojdbc6_g.jar except that it contains instrumentation to support DMS. Download ojdbc7.jar (3,397,734 bytes) - For use with JDK 7; It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types. Download ojdbc7_g.jar (5,395,834 bytes) - Same as ojdbc7.jar except compiled with "javac -g" and contains tracing code. Download ojdbc7dms.jar (4,044,963 bytes) - Same as ojdbc7.jar, except that it contains instrumentation to support DMS and limited java.util.logging calls. Download ojdbc7dms_g.jar (5,419,088 bytes) - Same as ojdbc7_g.jar except that it contains instrumentation to support DMS. Download orai18n.jar (1,659,576 bytes) - Classes for NLS support Download xdb6.jar (263,690 bytes) - Classes to support standard JDBC 4.x java.sql.SQLXML interface (Java SE 6 & Java SE 7). 附件里的文件都可以在这里下载,只是不用再注册用户了: http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html
Oracle官方11g 最新版jdbc驱动。 新特性:   1、支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持,是使用ojdbc6.jar来支持。J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。   2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。   3.j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。   4.11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.   5.支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。   6.高级队列支持。11R1提供了访问AQ的高性能接口。   7.支持数据库变更通知。   8.Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。   9.新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。   包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。   ojdbc5.jar: 适用于jdk5   ojdbc6.jar: 适用于jdk6   ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样   ---------------------------------------------------   总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。   我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。   尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值