注:资料有书为证,大伙可放心翻阅并熟记,由本人亲自总结!
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