初次写了一个类,想封装一下数据库操作,JSP执行耗时增加很多?
我想用这种方式使用数据库
String sql="...";
DbO dbO1=new DbO(sql);
dbO1.psm.setString(1,astr);
ResultSet rs=dbO1.executeQuery();
dbO1.close();
因此,我写了一个很怪的类:
public class DbO{
private Connection conn;
public PreparedStatement psm;
public DbO(String sql){
try{
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/xxx");
conn=ds.getConnection();
psm=conn.prepareStatement(sql);
}catch(Exception e){
e.printStackTrace();
}
}
public ResultSet executeQuery(){
ResultSet rs=null;
try{
rs=psm.executeQuery();
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
}
可是,为何服务器端JSP执行耗时增加很多?
我也没有用<jsp:useBean>,直接把DbO当普通的类也用,new了一个。
怎么改善执行效率啊?
若改成符合规范的JavaBean,能提高效率吗?
[解决办法]
你每次调用 jsp,都 new 一个 DataSource,这执行速度不慢才怪。
[解决办法]
对象太多了。建议用数据库连接池
[解决办法]
想法是好的,你想封装数据库的操作,也就需要自己写一个DAO,但是代码写的不对,给你个建议:
JDBC的操作大致可分为下面三类,具体细节和实现自己写吧,比如加载驱动的代码可以写到静态块等等
public List query(String sql,Object...arg){
}
public boolean update(String sql,Object...arg){
}
public void close(){
}