java面试题合集(11)

116 阅读3分钟

学习java.java实战项目

\

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