数据库连接如何处理最好?

orz_xu5653 2007-01-26 06:08:28
我在做一个大页面处理的时候,有些想法:
这个页面要 查询数据库10次
1.开一个数据库连接 查询完 10次 后关闭连接.
2.查询 1次 就 开/关 一次数据库连接 .

以上这两个方法 哪个好些??
或者 还有什么更好的方法吗??
...全文
264 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果在一个方法面里做 10 个数据库操作,肯定会很累,代码会很乱,而且代码的重用程度很低。

一般来说将一个业务方法作为一个数据库事务(或者说使用同一个数据库连接),一个业务方法可以调用多个 DAO 来完成,
当然了,这些 DAO 所使用 Connection 肯定得是以一个,但是为了方法重用每个 DAO 方法中仅完成一个数据库操作。根据
不同的业务方法调用不同组合的 DAO 方法完成一个逻辑,这样的话就存在一个问题,那就是 Connection 该如何管理?在这
种方式下 Connection 管理属于 J2EE 设计模式中的“事务上下文模式”,事务上下文模式的核心在于同一个请求线程使用同
一个 Connection,在 Java 中可以先将一个实例化的 Connection 放到 ThreadLocal 容器中,在 DAO 使用之处从当中取出来
DAO 方法中的 Connection 肯定是不能关的,得在事务完成提交后再进行关闭。

基本思想就是这样的,实现起来比较复杂,涉及到很多的技术点,Spring 中的事务管理基本上就是采用这种模式的。
mofa 2009-02-17
  • 打赏
  • 举报
回复
不赞成用后者,写一个数据库链接池.比用一次关一次要好些.
sunlink2 2007-01-30
  • 打赏
  • 举报
回复
假设不用事务,仅就lz的两个选择中选一个,大家选哪一种呢?
baobao28 2007-01-30
  • 打赏
  • 举报
回复
在数据库里作一个视图,使得查询只执行一次,这样比你这么查询的效率高很多

如果是觉得视图很难实现,活着根本是多个无关联的表,那么你可以做个存储过程,再通过存储过程声称临时表,这样还是只连接一次数据库,

连接数据库很费时间的,注意能少就少
sorrymyheart 2007-01-27
  • 打赏
  • 举报
回复
你可以开一次做一个事务,完成所有操作后提交事务,这样对数据库压力最小,并且避免产生异步问题
zero1111 2007-01-27
  • 打赏
  • 举报
回复
不建议第二种,个人选一种,只是写程序时注意安全问题.
steveyue 2007-01-27
  • 打赏
  • 举报
回复
使用数据库链接池动态获取数据库链接,然后使用事务机制,每个事务执行10次相关的操作后再提交。好处上面的兄弟已经说了
jicken_woo 2007-01-26
  • 打赏
  • 举报
回复
一般情况下操作一次关闭一次.这是处于安全方面的考虑.不能想当然.
比如下边的一小段代码,估计就能看出来了.
}finally{
try{
if (prepstmt != null) {
prepstmt.close(); //关闭
prepstmt = null;
}
}catch(Exception e){
System.out.println("dbBean close prepstmt error!");
}finally{
try{
if (conn != null) {
conn.close(); //关闭
conn = null;
}
}catch(Exception e){
System.out.println("dbBean close conn error!");
}
}
}
}
}
sunlink2 2007-01-26
  • 打赏
  • 举报
回复
希望高手指点!
sunlink2 2007-01-26
  • 打赏
  • 举报
回复
我也有这样的疑问,
一个页面里把con开/关10次好像不太好吧?
假如入有很多页面,每个页面里都要查询数据库3、4次,那岂不是很占用系统资源,本身con就是系统速度的瓶颈啊
orz_xu5653 2007-01-26
  • 打赏
  • 举报
回复
本人也是偏向 后者
哪里用就在哪里关
wanzyqyy 2007-01-26
  • 打赏
  • 举报
回复
我个人认为后面的一个要好一些吧~~

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧