我用二种方法从读数据(60000条数据的表)
1.
long bTime=System.currTime()..;
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:osn";
String user = "scott";
String password = "tiger";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
String sql = "SELECT * from cat" ;
ResultSet rs=stmt.execuQuery(sql);
while(rs.hastnext()){
... //组装object
}
long eTime=System.currTime..();
System.out.println("cost time="+(eTime-bTime));
2. 用了jdbc2.0中的datasource
DataSource datasource=(Datasource)ic.lookup(...) //通过jndi取Datasource
//读表两次,看时间差距
for(int count=0;count<2;count++)
{
long bTime=System.currTime.();
Connection conn=(DataSource)datasource.getConnection();
.. //后面的写法与1相同
long eTime=System.currTime..();
System.out.println("cost time="+(eTime-bTime));
}
据说第一种写法,每次查询前都要实例化一个类,所以性能会慢,jdbc2.0中引进了Datasource这个东东,是不是就是数据池呢?但是经过我的使用,2方法和1方法的时间没有什么区别,有时2快,有是1快,感觉1好象快一些.
我是多次执行的,特别是对第2种,datasource初始化好后,多次调用读取表记录的操作,时间基本一样,差几百ms
我的理解是不是有问题,数据池不是DataSource这个东东,是不是要把Connection这个对象包在里面才算?