盘问关于Java数据库连接池的一个操作时间

询问关于Java数据库连接池的一个操作时间
有a,b,c,d,e操作顺序执行,每个操作都有建立连接,读取或者更新数据库,关闭连接
下面两种策略

1.使用数据库连接池的话,a,b,c,d,e连续执行下来(每次操作依然建立、读取或更新、关闭)
2.在编程的时候为a,b,c,d,e操作建立一次connetion,然后操作数据库,最后关闭

那么1、2,哪种方法更好一点?2的速度回显著快于1 吗?

------解决思路----------------------
没有什么实质差异,J2EE 的连接池与事务管理之间有绑定关系。
我们只要设置连接池是共享式的就可以了。

1、一个物理连接是不可能同时工作在超过1个事务中的。
2、在同一个事务内,我们多次打开和关闭连接实际上它背后的物理连接并没有跟着频繁地打开关闭,它们是共享的,在同一个事务中能无条件地共享,也应该共享(否则你刚改一个表的数据再来 select 却被锁定不就成了一个笑话)。

在一个事务内多次打开和关闭没有多大性能损失,但代码的条理性更好,这是推荐的。如果每次都自己手工去拿连接,然后当成参数传递在各个方法调用之间就导致程序设计变复杂了,而且有时候还会稿错事务绑定,因为它要求你传递的参数在指定的方法中也确实与它是同一个关联事务,如果这是在 EJB 中就变得复杂了,容易出错,因为这相当于你也像 EJB 容器一样地在跟踪 J2EE 组件的当前事务绑定,而这本来应该是对应用程序透明的部分。

------解决思路----------------------
使用连接池:
一次买四个苹果,放家里冰箱,想吃的时候,直接从冰箱里拿,   省时间,但是不省空间
不使用连接池:
想吃苹果的时候,自己下楼去水果店买一个,然后又回到家里吃,  省空间,但是不胜时间.
------解决思路----------------------
引用:
如果尽量在一个连接内解决所有事情,会不会更快。Magical茏


你使用连接池照样可以一个连接内解决所有事情
------解决思路----------------------
没有本质区别,连接池本来获得连接就比较快,不过我个人喜欢用2,感觉还是快那么一点点。
------解决思路----------------------
引用:
我测试对比了一下
查询所有用户信息,还需要在其他3个表中查询该用户cityId、provinceId,roldId对应的显示名称
web服务器在本机+DB服务器在远端
1.不加数据库连接池+误用的程序逻辑(对每个用户的每个cityId、provinceId,roldId分别建立一次conn,然后关闭)
大概用时15s,不能忍
15s应该连接时间加执行时间

2.用了连接池+误用的程序逻辑
降到3325ms
这个应该只是执行时间

3.用了连接池+正确的程序逻辑(一条sql语句+left join)
降到了456
那是因为连接池里面有已经初始化了的数据库连接,所以快。如果直接用JDBC每次都要重新创建连接,当然慢了。