JDBC 连接数据库 中Class.forName的作用
来源:互联网 发布:单片机开发软件 编辑:程序博客网 时间:2024/05/20 22:27
JAVA课上交过jdbc连接数据库。可是老师也没说当中 这样的代码是什么意思:
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL);
很久前 看到一个面试题 大概也是问这几行代码的意思。没去研究。
今天看了java反射机制后 了解了下。大概是这样的。
java中一个类被实例化前他首先需要被加载。
加载时 会运行这个类中的static代码。
加载这个环节有什么作用?举个例子:比如说java loader在load一个远程服务器上类A的时候,它会执行类A中的static部分
如:
Class A{
static{
....
date time ;
}
}
此时可以加上时间戳,表示加载时间。
回到JDBC的问题:
JDBC规范中要求这个Driver类必须向DriverManager注册自己。
所以在执行
Class.forName("com.mysql.jdbc.Driver");
这行代码时。JVM会加载 名字为 com.mysql.jdbc.Driver的这个Driver类。
而com.mysql.jdbc.Driver 这个类的代码应该是这样的:
Class com.mysql.jdbc.Driver {
static{
// regist self to DriverManager
}
}
此时,这个Driver类就被加载了,由于静态部分被执行,同时这个Driver也被注册进入了DriverManager中。
PS:此时这个Driver没有被实例化。被实例化的只是描述他结构的类(Class)
在就是第二句代码:
conn = DriverManager.getConnection(URL);
从DriverManager取得连接。
这也是reflection的一个作用 实例。
- JDBC 连接数据库 中Class.forName的作用
- JDBC 连接数据库 中Class.forName的作用
- JDBC中Class.forName()的作用
- JDBC中Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- JDBC Class.forName语句的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时 Class.forName()的作用
- 使用JDBC时Class.Forname()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- hdu 1069 Monkey and Banana
- [ahk]右键菜单打开文件所在文件夹(快捷方式也适用)
- 基于单片机STC89C52RC 00~60秒 计时器设计
- 分布式与集群的区别
- Android APP开发 Diary 设计篇
- JDBC 连接数据库 中Class.forName的作用
- CRS-4639: Could not contact Oracle High Availability Services
- PathInfo模式的支持
- JSTL标签_详解
- thinkphp在新浪SAE平台的部署
- 【Qt开发】qml页面的创建、呈现与销毁
- MapReduce源码 分析总结
- struts中ActionForward 使用mapping.findForward如何传递get参数
- 黑马程序员——java多线程