jdbc在mvc中connection。statement,resultset的关闭问题 1.preparestatement和resultset是当作成员变量好 还是在方法中定义好?2.mvc中connection在dao层光,service层关,还是control层关? 因为我感觉一个service用到很多查询如果放在dao里面就关掉太频繁了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 preparestatement和resultset 很少见有程序 作为成员变量的;mvc只是的 model模型;view 界面;control 控制,是将界面设计与程序逻辑分开的一种设计模型;和数据库链接没有关系吧?关于数据库连接;建议你看一下数据库“连接池” 的相关介绍;频繁的想数据库申请链接、释放链接是要占用很大开销的;数据库连接池 会向数据库 申请罗干个链接,并且一直保持这些链接一直处于链接状态,程序使用链接实际上不是直接与数据库建立链接,而是到到数据库连接池中 申请一个空闲的链接,使用完以后并不是释放链接,而是将链接归还到连接池中;因此数据库链接一般是 有一个数据连接管理层(有些中间件 自带,tomcat weblogic 都有),也可以自己写,所有与真正与数据库打交道的由它来完成;然后程序只需要向数据连接管理层申请链接 以及 归还使用完的链接就是了。以上仅个人意见,如有误,请谅解。 1.我觉得应该当成局部变量使用,多个查询同时操作你不担心覆盖问题吗?2.在DAO之外关闭连接,你不觉得违反MVC原则吗?如果觉得关闭太频繁,可以使用数据池管理数据库连接. 没用框架的话就应该在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); } preparestatement和resultset作为成员变量mvc是的 model模型;view 界面;control 控制这是哪个都知道的。在DAO之外关闭连接,违反MVC原则所以综合考虑。你最好使用数据缓存池来处理。来管理数据库。 DBCon.close(con, stm, rs);如果加了service层的话就在service层里面try catch 写个基类,在基类中作为属性,定义closeAll方法,然后所有dao继承它,在各个方法中该关就关,要不太耗资源了。 Connection 最好是在service层传到dao层 并且不要频繁的关闭和打开 这样将会是开销变得很大至于 preparestatement和resultset在dao关闭就可以了 网站出错,大神求职! 帮忙看一下做java开发的电脑配置,选哪个好 请各位大虾帮忙,连接问题 关于struts(129)DispatchAction的路径 关于hibernate 和spring整合问题 java 关于使用表格更新数据库(连接数据库) 优酷,土豆网知道用的什么技术吗? QQ空间留言板的上一页和下一页是怎样实现的呢? 求助大虾 用jsp可以实现国际化吗? 【求教】关于tomcat6.0连接池的问题 mysql的存储过程在java代码里边调用怎么会报空指针异常呢??????????、会的大侠帮帮忙
建议你看一下数据库“连接池” 的相关介绍;
频繁的想数据库申请链接、释放链接是要占用很大开销的;
数据库连接池 会向数据库 申请罗干个链接,并且一直保持这些链接一直处于链接状态,程序使用链接实际上不是直接与数据库建立链接,而是到到数据库连接池中 申请一个空闲的链接,使用完以后并不是释放链接,而是将链接归还到连接池中;因此数据库链接一般是 有一个数据连接管理层(有些中间件 自带,tomcat weblogic 都有),也可以自己写,所有与真正与数据库打交道的由它来完成;然后程序只需要向数据连接管理层申请链接 以及 归还使用完的链接就是了。以上仅个人意见,如有误,请谅解。
2.在DAO之外关闭连接,你不觉得违反MVC原则吗?如果觉得关闭太频繁,可以使用数据池管理数据库连接.
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);
}
mvc是的 model模型;view 界面;control 控制这是哪个都知道的。在DAO之外关闭连接,违反MVC原则
所以综合考虑。你最好使用数据缓存池来处理。来管理数据库。
就在service层里面try catch