日期:2014-05-20  浏览次数:20796 次

加载数据库驱动的问题
Class.forName("org.gjt.mm.mysql.Driver") 这句反复调用会有什么情况发生?
是只调用一次,还是不断的分配资源?

------解决方案--------------------
好像应该只加载一次吧!
他好像是要先判断你加载的类是不是已经被加载了,没加载的话才加载。
------解决方案--------------------
简单做一实验即可


public class Test {

public static void main(String[] args) {
try {
Class<?> a = Class.forName("org.gjt.mm.mysql.Driver");
Class<?> a1 = Class.forName("org.gjt.mm.mysql.Driver");
System.out.println(a == a1);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
打印出来为true,证明是同一对象,这里不担心对象过多的情况,不存在,因为是单例,既然是单例,所以也可以忽略两次加载是时间的差异,不过加载驱动,1次即可,多了没用
------解决方案--------------------
用反射加载,应该只是在刚开始的时候加载一次