哪位能具体讲讲JDBC连接池的作用?

gj1111myl 2010-11-12 05:16:19
有一点JSP的使用经验,没接触过“连接池”这东西
前两天知道了这个东西,在网上找了个例子。

问题1:
我理解“连接池”就是为了防止对数据库的操作太多,而限制了链接的数量。

可我不能理解,如果当前连接超过了最大连接数,
是让此次请求等待到有空闲连接,还是直接说这次请求失败?

如果等待空闲连接,难道要用到线程等待,来做等待空闲连接的操作么?
实现思路呢??


问题2:
JDBC是不是不带连接池,需要自己设计一个类来控制
而Hibernate和Ibatis之类的东西,有自己的连接池,只需要配置XML文件就能设置。
不知道这个想法对不对

如果我想对了的话,HIBERNATE和IBATIS能不能不用自带的连接池而改用自己编写的呢?

问题3:
具体系统讲解这方面知识的书有哪些呀?


谢谢各位回答,100分敬上!

...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosmostornado 2010-11-12
  • 打赏
  • 举报
回复
连接池吗:恩我举个列子哦。。连接池其实就是相当于打移动10086客服电话一样,接受客服电话的一次同时最多只能接多少个客服电话,这个就是最大连接数。如果没有超过这个最大连接数的话,就会有相应的客服人员,来接通你的拨通的电话,这个就是连接上了,而且还有相应的响应了。如果达到了最大连接数的话,就会让该请求在等待中,该等待也有个时间限制,可以你自己去设置,叫做超时时间。如果超过该时间,就请求失败。在这个超时时间内,有人接通的话,那你的请求也就有响应了。这个时间段,恩,到底会是哪个客服人员来接通你的电话呢?这个就要看哪个客服人员的空余时间最长了。由空余时间最长的客服人员来接通你的电话。空余时间:就是该客服人员休息的时间。其实连接池里面,也会自动的去扫描空余时间最长的连接,从而去连接。以上就是我的个人理解。如有不妥之处,请担待!!!!
houjin_cn 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gj1111myl 的回复:]
wait notify具体如何实现呢?
最好给个JAVA关键词或者关键语句
[/Quote]

Object.wait() Object.notify() synchronized
gj1111myl 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 houjin_cn 的回复:]

连接池的作用:
1)可以限制最大连接数
2)可以提高效率, 因为不用每次都重新建立连接

请求超出最大连接数时,就wait 等待 notify, 等待太长时间就超时,抛异常
[/Quote]

wait notify具体如何实现呢?
最好给个JAVA关键词或者关键语句

谢谢
  • 打赏
  • 举报
回复
请看CSDN博客jdbc连接池
lhzx_zjg 2010-11-12
  • 打赏
  • 举报
回复
1.连接池不是为了限制连接而用的,我们知道每次连接数据都要通过IO,以及网络传输。这样就会导致时间长及消耗性能,所有程序初始化的时候默认先建一堆已经连接好的Connection放在内存中。每次使用只要从内存中取就OK,如果连接数不够用,我们就会按配置好的常数再去初始化一些Connection放在内存中,当然如果Connection闲置过多,又可以进行回收Close掉。如果Connection超过配置好的最大数,则之后的要获取连接的操作只能等待。或者增大最大连接数。
2.可以自己写连接池。

<bean id="mySqlDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value=""/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>

红色部分可以写自己的连接池类
3.书就不太清楚有哪些了。
kebin0001 2010-11-12
  • 打赏
  • 举报
回复
A1. 限制連線數應該算第二要點,第一要點是減少連線及釋放連線的時間。
當線程用完之後就會等待,但如果等待的線程過多,或過長,就要考慮調整線程數目。

A2. JDBC只是單一連線,所以要用連接池來提高效能。連接池當然可以自己做。

A3. 書籍的話,JDBC或Hibernate的書都會提到。

houjin_cn 2010-11-12
  • 打赏
  • 举报
回复
连接池的作用:
1)可以限制最大连接数
2)可以提高效率, 因为不用每次都重新建立连接

请求超出最大连接数时,就wait 等待 notify, 等待太长时间就超时,抛异常
gj1111myl 2010-11-12
  • 打赏
  • 举报
回复
希望看到各位前辈的真知灼见

而不是网上 COPY来COPY去的东西

谢谢!

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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