Java数据库面试题及答案(实战版).docx

Java数据库面试题及答案(实战版).docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Java数据库面试题及答案(实战版)

1.说说JDBC操作数据库的核心步骤,用代码示例说明?

JDBC核心是通过API建立Java与数据库的交互,关键步骤要注意资源关闭和防注入,实际开发常用try-with-resources自动释放资源:

publicUserqueryUserById(intid){

Stringurl=jdbc:mysql://localhost:3306/test?useSSL=falseserverTimezone=UTC;

Stringuser=root;

Stringpwd=123456;

Userresult=null;

//try-with-resources自动关闭Connection/PreparedStatement/ResultSet

try(Connectionconn=DriverManager.getConnection(url,user,pwd);

PreparedStatementpstmt=conn.prepareStatement(SELECTid,name,ageFROMuserWHEREid=?)){

//设置参数(索引从1开始),避免SQL注入

pstmt.setInt(1,id);

//执行查询获取结果集

try(ResultSetrs=pstmt.executeQuery()){

if(rs.next()){

result=newUser();

result.setId(rs.getInt(id));

result.setName(rs.getString(name));

result.setAge(rs.getInt(age));

}

}

}catch(SQLExceptione){

//实际项目要打印详细日志(如Logback),而非直接print

log.error(查询用户异常,用户ID:{},id,e);

}

returnresult;

}

注意点:①MySQL5.1+驱动(com.mysql.cj.jdbc.Driver)无需手动Class.forName();②URL必须加serverTimezone,否则会有时区异常;③坚决不用Statement,避免SQL注入。

2.PreparedStatement和Statement的区别?为什么优先用前者?

最核心区别是SQL预编译和防注入,具体对比:

维度

Statement

PreparedStatement

SQL执行方式

每次执行都编译SQL

只编译一次(预编译)

性能

重复执行相同SQL时性能差

重复执行性能更高

SQL注入风险

有(直接拼接参数)

无(参数占位符?)

批量操作

不支持addBatch()

支持批量操作

为什么优先用PreparedStatement?

举个注入例子:如果用Statement查询用户,参数直接拼接:

//恶意用户输入id为1OR1=1,会查询所有用户数据

Stringsql=SELECT*FROMuserWHEREid=+userId;

Statementstmt=conn.createStatement();

stmt.executeQuery(sql);

而PreparedStatement用?占位,参数会被JDBC自动转义,即使输入恶意值也只会当作普通字符串处理,从根源避免注入。

3.常用数据库连接池有哪些?HikariCP比Druid优势在哪?

常用连接池:HikariCP(SpringBoot默认)、Druid(阿里,带监控)、C3P0(老旧,少用)。

HikariCP优势(性能比Druid高20%+):

轻量级设计:没有多余装饰器,代码量仅Druid的1/10,减少内存开销;

高效连接管理:用ConcurrentBag(而非普通集合)管理连接,并发获取连接速度快;

优化细节:用FastList替代ArrayList(避免边界检查)、无锁设计减少线程竞争;

配置简单:核心参数少,默认配置已适配多数场景。

HikariCP核心配置示例(

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档