有一点JSP的使用经验,没接触过“连接池”这东西
前两天知道了这个东西,在网上找了个例子。问题1:
我理解“连接池”就是为了防止对数据库的操作太多,而限制了链接的数量。可我不能理解,如果当前连接超过了最大连接数,
是让此次请求等待到有空闲连接,还是直接说这次请求失败?如果等待空闲连接,难道要用到线程等待,来做等待空闲连接的操作么?
实现思路呢??
问题2:
JDBC是不是不带连接池,需要自己设计一个类来控制
而Hibernate和Ibatis之类的东西,有自己的连接池,只需要配置XML文件就能设置。
不知道这个想法对不对如果我想对了的话,HIBERNATE和IBATIS能不能不用自带的连接池而改用自己编写的呢?问题3:
具体系统讲解这方面知识的书有哪些呀?
谢谢各位回答,100分敬上!

解决方案 »

  1.   

    希望看到各位前辈的真知灼见而不是网上 COPY来COPY去的东西谢谢!
      

  2.   

    连接池的作用:
    1)可以限制最大连接数
    2)可以提高效率,  因为不用每次都重新建立连接请求超出最大连接数时,就wait 等待 notify, 等待太长时间就超时,抛异常
      

  3.   

    A1. 限制連線數應該算第二要點,第一要點是減少連線及釋放連線的時間。
        當線程用完之後就會等待,但如果等待的線程過多,或過長,就要考慮調整線程數目。A2. JDBC只是單一連線,所以要用連接池來提高效能。連接池當然可以自己做。A3. 書籍的話,JDBC或Hibernate的書都會提到。
      

  4.   

    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.书就不太清楚有哪些了。
      

  5.   

     请看CSDN博客jdbc连接池
      

  6.   


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

  7.   


    Object.wait()  Object.notify()  synchronized