1.preparestatement和resultset是当作成员变量好
  还是在方法中定义好?
2.mvc中
connection在dao层光,service层关,还是control层关?
 因为我感觉一个service用到很多查询
如果放在dao里面
就关掉太频繁了

解决方案 »

  1.   

    preparestatement和resultset 很少见有程序 作为成员变量的;mvc只是的 model模型;view 界面;control 控制,是将界面设计与程序逻辑分开的一种设计模型;和数据库链接没有关系吧?关于数据库连接;
    建议你看一下数据库“连接池” 的相关介绍;
    频繁的想数据库申请链接、释放链接是要占用很大开销的;
    数据库连接池 会向数据库 申请罗干个链接,并且一直保持这些链接一直处于链接状态,程序使用链接实际上不是直接与数据库建立链接,而是到到数据库连接池中 申请一个空闲的链接,使用完以后并不是释放链接,而是将链接归还到连接池中;因此数据库链接一般是 有一个数据连接管理层(有些中间件 自带,tomcat weblogic 都有),也可以自己写,所有与真正与数据库打交道的由它来完成;然后程序只需要向数据连接管理层申请链接 以及 归还使用完的链接就是了。以上仅个人意见,如有误,请谅解。
      

  2.   

    1.我觉得应该当成局部变量使用,多个查询同时操作你不担心覆盖问题吗?
    2.在DAO之外关闭连接,你不觉得违反MVC原则吗?如果觉得关闭太频繁,可以使用数据池管理数据库连接.
      

  3.   

    没用框架的话就应该在dao里面每个方法的finally里面关闭
    public static void close(Connection con,Statement stm,ResultSet rs){
    if(con!=null){
    try {
    con.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    if(stm!=null){
    try {
    stm.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }finally {
    DBCon.closeConnection(con);
    }
      

  4.   

    preparestatement和resultset作为成员变量
    mvc是的 model模型;view 界面;control 控制这是哪个都知道的。在DAO之外关闭连接,违反MVC原则
    所以综合考虑。你最好使用数据缓存池来处理。来管理数据库。
      

  5.   

    DBCon.close(con, stm, rs);如果加了service层的话
    就在service层里面try catch 
      

  6.   

    写个基类,在基类中作为属性,定义closeAll方法,然后所有dao继承它,在各个方法中该关就关,要不太耗资源了。
      

  7.   

    Connection 最好是在service层传到dao层 并且不要频繁的关闭和打开 这样将会是开销变得很大至于 preparestatement和resultset在dao关闭就可以了