JAVA JDBC常见面试题及答案
JAVA JDBC常见面试题及答案
什么是jdbc,在什么时候会用到它?
jdbc的全称是java database connection,也就是java数据库连接,我们可以用它来操作关系型数据库。jdbc接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行sql查询,存储过程,并处理返回的结果。
jdbc接口让java程序和jdbc驱动实现了松耦合,使得切换不同的数据库变得更加简单。
有哪些不同类型的jdbc驱动?
有四类jdbc驱动。和数据库进行交互的java程序分成两个部分,一部分是jdbc的api,实际工作的驱动则是另一部分。
a jdbc-odbc bridge plus odbc driver(类型1):它使用odbc驱动连接数据库。需要安装odbc以便连接数据库,正因为这样,这种方式现在已经基本淘汰了。
b native api partly java technology-enabled driver(类型2):这种驱动把jdbc调用适配成数据库的本地接口的调用。
c pure java driver for database middleware(类型3):这个驱动把jdbc调用转发给中间件服务器,由它去和不同的数据库进行连接。用这种类型的驱动需要部署中间件服务器。这种方式增加了额外的网络调用,导致性能变差,因此很少使用。
d direct-to-database pure java driver(类型4):这个驱动把jdbc转化成数据库使用的网络协议。这种方案最简单,也适合通过网络连接数据库。不过使用这种方式的话,需要根据不同数据库选用特定的驱动程序,比如ojdbc是oracle开发的oracle数据库的驱动,而mysql connector/j是mysql数据库的驱动。
jdbc是如何实现java程序和jdbc驱动的松耦合的?
jdbc api使用java的反射机制来实现java程序和jdbc驱动的松耦合。随便看一个简单的jdbc示例,你会发现所有操作都是通过jdbc接口完成的,而驱动只有在通过class.forname反射机制来加载的时候才会出现。
我觉得这是java核心库里反射机制的最佳实践之一,它使得应用程序和驱动程序之间进行了隔离,让迁移数据库的工作变得更简单。在这里可以看到更多jdbc的使用示例。