\
1.1 JDBC连接数据库步骤
1、 加载驱动。
2、 提供URL,数据库用户名密码,创建Connection连接对象。
3、 创建Statement,执行静态SQL语句。通常通过Statement实例实现,执行动态SQL语句。通常通过PreparedStatement实例实现。
4、 执行SQL语句,并处理结果。
5、 关闭JDBC连接。
1.2 数据库连接池
数据库连接池的优点运行原理:
在我们不使用数据库连接池的时候,每次访问数据库都需要创建连接,使用完成之后需要释放关闭连接,而这样是很耗费资源的。当我们使用数据库连接池的时候,在容器启动的时候就创建了指定数量的连接,之后当我们程序使用的时候就直接从连接池里面取,而不需要创建,同理,当我们使用完的时候也不需要关闭连接,而是将连接返回到连接池中,供其他请求继续使用。
现在常用的开源数据连接池主要有c3p0、dbcp和proxool三种,其中:
hibernate开发组推荐使用c3p0;
spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,告诉连接被重置,这个设置可以解决);
hibernate in action推荐使用c3p0和proxool;
1.3 jdbc分段批量提交的时候出现异常怎么处理?
通过Map来解决性能问题。首先在分段批量提交的时候,我们不采用事务,这样就保证了合法的数据就自动提交,不合法的数据就自己自动进行回滚,为了避免不合法数据影响后续合法数据的提交,采用定义业务规则字典表,实现对数据的验证,将不合法的数据记录下来,供用户进行后续处理,而合法的数据就全部提交。
1.4 JDBC批量处理数据
批量处理数据:(代码优化:提高程序执行性能)
降低了java程序代码(客户端)和数据库之间的网络通信的次数。
在jdbc中进行批量插入的核心API为 addBatch,executeBatch
大数据量的插入问题:(jdbc,hibernate,ibatis)
1.每次只插入一条和数据库交互多次(很耗时间)
2.批量插入和数据库只交互一次(内存溢出)
3.分段批量插入(推荐)
jdbc批量处理数据是通过PreparedStatement对象的 addbatch(),executebatch() clearbatch()进行和数据库的交互。通常我们使用分段批量处理的方式这样可以提高程序的性能,防止内存溢出。
1.每个sql语句都和数据库交互一次(非批量操作)
2.只和数据库交互一次(批量操作)(内存溢出)
当数据达到一定额度的时候就和数据库进行交互,分多次进行(分段批量操作)
(500或者1000)
pst.addBatch();
if (i > 0 && i%1000 == 0) {
pst.executeBatch();
pst.clearBatch();
}
1.5 Oracle分页语句
select * from (select * from (select s.*,rownum rn from student s ) where rn<=5) where rn>0
1.6 MySQL分页语句
select * from music where id limit 5,5