Java史上最最基础面试题系列(11、Java数据库操作)——看到,你离工作就比别人近了一半!!!

注:资料有书为证,大伙可放心翻阅并熟记,由本人亲自总结!

1、如何通过JDBC访问数据库?

通过JDBC访问数据库一般有如下几步:

①、加载JDBC驱动器。将数据库的JDBC驱动加载到classpath中。

②、加载JDBC驱动,并将其注册到DriverManager中,一般采用反射Class.forName(String driveName)

③、建立数据库连接。取得C哦你呢才提哦那对象,一般通过DriverManager.getConnection(url,username ,passwd)。

④、建立Statement对象或是PreparedStatement对象。

⑤、执行SQL语句。

⑥、访问结果集ResultSet对象

⑦、一次将ResultSet、Statement、PreparedStatement、Connection对象关闭。

2、JDBC处理事务采用什么方法?

一个事务是由一条或多条对数据库操作的SQL语句所组成的一个不可分割的工作单元,只有当事务中的所有操作都正常执行完了,才能将整个事务提交给数据库。

一般通过commit()或rollback()方法来结束事务的操作。

还可以通过调用setAutoCommit(false)方法来禁止自动提交。

JDBC有哪些事务隔离级别:

①、transaction_none_jdb:不支持事务。

②、transaction_read_uncommitted:未提交读。

③、transaction_read_committed:已提交读。

④、transaction_repeatable_read:可重复读。

⑤、transaction_serializable:可序列化,最高的事务级别。

拓展:不可重复读和虚读其实差不多,但是前者是针对更新操作,而后者更倾向于新增或者删除操作。

3、Class.forName的作用是什么?

Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带给定字符串名的类或接口相关联的Class对象。

它可以用来加载JDBC驱动,那么是不是一定要调用它呢,其实不然,它也可以用new来带起,但二者的区别也非常明显:创建对象的方式不同。前者用类加载机制,后者是创建了一个新的类。

在调用Class.forName()方法时,这个Driver类被加载了,由于静态部分被执行,因此,Driver也被注册到了DriverManager中。

4、Statement、PreparedStatement和CallableStatement有什么区别?

Statement用于执行带参数的简单SQL语句,并返回它所生成结果的对象,每次执行SQL语句时,数据库都要编译该SQL语句。

PreparedStatement表示预编译的SQL语句的对象,用于执行带参数的预编译SQL语句。

CallableStatement则提供了用来调用数据库中从存储过程的接口,如果有输出参数要注册,说明是输出参数。它由prepareCall()方法创建,它为DBMS提供了一种以标准形式调用已存储过程的方法。

Statement对象与PreparedStatement对象能够完成相同的功能,相比之下,PreparedStatement具有以下优点:

①、效率更高。会多次解析,但只会编译一次。

②、代码可读性和可维护性更好。

③、安全性更好。能够起到预防SQL注入攻击。

5、getString()方法与getObject()方法由什么区别?

JDBC提供了getString()、getInt()、getData()等方法从ResultSet中获取数据。

getString()或getInt()等方法再被调用时,程序会一次性地把数据都放到内存中,然后通过调用ResultSet的next()和getString()等方法来获取数据。但当数据量道道内存中放不下去的时候就会抛出异常,而getObject()方法却不会出现这种问题。

6、使用JDBC时需要注意哪些问题?

creatStatement和PreparedStatement最好放在循环外面,而且使用了这些Statement后,需要及时关闭。最好执行一次CRUD后,不再使用结果集的数据,就马上关闭。

因为每次执行,实际上都相当于在数据库中打开了一个cursor(游标),如果把对这两个方法的调用放到循环内,会一直不停地打开游标,如果不能及时地关闭,会导致程序抛出异常。

7、什么时JDO?

Java数据对象(Java Data Object)是一个用来存取某种数据库中的对象的标准化API,它使开发人员能够间接地访问数据库。

JDO时JDBC的一个补充,对开发人员来说存储数据对象不再需要额外的代码,这些繁琐的工作交给JDO产品提供商身上。

相较于JDBC,JDO更灵活,更通用,它提供了到任何数据底层的存储功能,例如关系数据库、文件、xml以及对象数据库管理系统,使得应用可移植性更强。

8、JDBC与Hibernate有什么区别?

Hibernate时JDBC的封装,采用配置文件的形式将数据库的连接参数写到XML文件中,至于对数据的访问还是通过JDBC来完成。

Hibernate是一个持久层框架,它将表的信息映射到XML文件中,再从XML文件映射到相应的持久层类中,这样可以使用Hibernate独特的查询语言了。

假设有100个类都是SQL语句,这个时候表明改变了,那么就要把这100个类的语句全部重写,而采用Hibernate的方式只需修改DAO层的类即可,因此Hibernate具有很好的维护性和扩展性。

转载麻烦请附录地址,感谢大家配合!!!
https://blog.csdn.net/HOLLOWYANG/article/details/119987166

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值