1.首先,什么是数据源?

数据源就是项目中指定数据库的一条路径,他并没有实际的数据.仅仅记录的是你连接的是哪个数据库,以及是如何连接的,一个数据库可以有多个数据源.可以存在于服务器端,也可以存在于客户端;

2.什么是数据库连接池?

我们都知道数据库连接是一种非常昂贵的资源,在多用户的网页应用程序中尤为重要,如果频繁的连接,断开的话,很容易造成资源浪费.数据库连接池的话就是在我们项目启动的时候也启动了一定数量的连接.

如果并没有使用数据库连接的话,他仍然保留最大连接数,数据库连接请求没有超过项目启动时创建的连接就不会去新建,相反,如果数据库连接已经超过了项目启动时创建的连接就会去新建一个数据库连接,如果数据库连接池中的连接超过了maxActive = activenum 则作如下处理:

    1 直接抛错 
    2 让想要借出连接的线程等待一段时间,如果等不到,再抛错 
    3 每隔一段检查一次pool,直到有可用连接,否则一直等下去 
    4 永远可以拿到(视情况需要maxActive不设置或0或负) 

但当没有可以使用的数据库链接的时候,连接池将要等待一个链接被返回的最长时间(毫秒)maxWait=waitnum,超过这个时间就要抛出异常。

3.数据源和数据库连接池的关系?

我们通常在第三方工具,IDE编码工具来操作数据源从而实现对数据库的操作.一个数据库可以创建多个数据源.但是如果我们在代码中单纯的使用JDBC来大量连接数据库,难免会造成死机.

连接池是指这样的一个“池子”:

 该池子中的每个东西都是连接数据源的一个“连接”,

 这样别人想连接数据源的时候可以从这个“池子”里取,

 用完以后再放回来供以后其他想使用的人使用。