思路:
a.当数据库需要插入大文本时可用采用:批处理jdbc语句提高处理速度。
b.当遇到大文本数据时,比如图片数据和影视数据及万字以上数据时可采用LOB即大文本对象,用来存储二进制和文本数据。理论上最大可以存储4GB。当然如果你的内存够大的情况下。
c.JDBC驱动处理元数据.DatabaseMetaData类 通过Connection的getMetaData()获得DatabaseMetadata
DatabaseMetaData dmd = conn.getMetaData();
d. ResultSetMetaData元数据。获取方法
ResultSet rs = stmt.executeQuery("select * from students");
ResultSetMetaData rsmd = rs.getMetaData();
可用于获取结果集的各个列数据及其类型。应用实例:将数据库的数据转到xml文件中。
e.dbcp连接池和c3p0连接池。tomcat用的是dbcp类型。hibernate使用的是c3p0.
数据连接池技术和数据库批量查询:
批量查询:
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, i);
pstmt.setString(2, "name"+i);
pstmt.setString(3, "email"+i);
//将一组参数添加到此 PreparedStatement 对象的批处理命令中
pstmt.addBatch();
if(i%1000==0){
// 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组
pstmt.executeBatch();
//清空此 Statement 对象的当前 SQL 命令列表。
pstmt.clearBatch();
}
当达到指定的批量后清空批查询语句,并重新填充.循环至所有条数
dbcp连接池:
使用DBCP连接池:
方法一
* 引入jar包
* commons-dbcp.jar; common-pools.jar
* 如何使用
BasicDataSource bds=new BasicDataSource();
//设置用户名
bds.setUsername("root");
//设置密码
bds.setPassword("root");
//设置驱动类
bds.setDriverClassName("com.mysql.jdbc.Driver");
//设置url
bds.setUrl("jdbc:mysql://localhost:3306/test");
//设置初始化连接数
bds.setInitialSize(4);
//设置最小空闲数,防止当洪峰到来时,再次申请连接引起的性能开销
bds.setMinIdle(5);
//设置最大空闲数,放洪峰过后,连接池中的连接过多
bds.setMaxIdle(7);
//设置最大连接数
bds.setMaxActive(20);
//设置等待时间,以毫秒为单位,设置为-1表示无限期等待
bds.setMaxWait(5000);
//获取连接
conn=bds.getConnection();
方法二:
* 引入jar包
* commons-dbcp.jar; common-pools.jar
* 如何使用
Properties prop=new Properties();
prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
prop.setProperty("password", "root");
prop.setProperty("username", "root");
prop.setProperty("url","jdbc:mysql://localhost:3306/test");
prop.setProperty("minIdle", "4");
prop.setProperty("maxIdle", "6");
prop.setProperty("maxWait", "5000");
prop.setProperty("maxActive ", "20");
DataSource dataSource=null;
try {
dataSource=BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
//获取连接
conn=dataSource.getConnection();
c3p0连接池:
ComboPooledDataSource cpds=null;
//创建c3p0数据源对象
cpds = new ComboPooledDataSource();
//设置驱动
cpds.setDriverClass("com.mysql.jdbc.Driver");
//设置url
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test" );
//设置用户名
cpds.setUser("root");
//设置密码
cpds.setPassword("root");
// the settings below are optional -- c3p0 can work with defaults
//设置最小连接数
cpds.setMinPoolSize(5);
//每次申请连接的数量
cpds.setAcquireIncrement(5);
//设置最大连接数
cpds.setMaxPoolSize(20);
dbcp和c3p0比较:
Hibernate废弃的dbcp连接池而是用c3p0,肯定是有原因的。dbcp连接池和weblogic会产生一些兼容性问题