数据库连接池
什么是连接池
池:一个容器,在内存中的一片空间,用于存储程序中的数据。
连接池:将连接对象存放在一个容器中,当需要连接时,就直接从连接池中获取一个连接,进行使用。用完连接后,再将连接还回连接池中。
目的:减少连接创建和关闭的次数,实现连接的服用。
传统方式访问数据库
连接connection相当于一个通道,创建和关闭耗时间很多。
在传统方式中,不使用连接池。每次需要创建一个连接进行使用,用完连接后直接关闭。对于数据库来说频繁的创建和关闭会非常消耗资源,而且耗费时间。会导致程序执行效率降低,连接也不会复用。
使用连接池访问数据库
可以在程序中创建一个池,在程序一启动时,就初始化一批连接放在连接池中。当用户需要连接时,就直接从池中拿一个连接进行使用。当连接用完后,也不要将连接关闭,而是将连接还回池中。下一个用户需要连接时,也是如此。可以减少连接创建和关闭的次数,提高执行效率和实现连接的复用。
如何使用连接池
*后面跟了connect.close的意思是将连接还回连接池中。代码跟关闭代码没有区别。原因:如果连接对象是我们自己获取的连接对象,调用连接的close方法是将连接关闭还给数据库,但如果连接是从连接池中获取的连接对象,由于连接池将连接返回之前对连接对象进行了改造,将连接对象的方法改成了还连接到连接池中。同样调用了方法close,将close方法改变成了还连接返回连接池。
缺点:把所有的用户参数写死在程序里面。如果用户参数改变,要在程序里面改,然后再重新发布。
- 在原码目录(如src,都是source folder)下新建一个file(文件名固定c3p0.properties)。将来c3p0程序底层会自动的到指定位置(src源码目录或在相似的源码目录下)寻找指定名称文件(c3p0.properties)。如果可以找到文件可以读取文件中的配置,就可以连接上数据库。可以初始化一批连接放在连接池中。
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://127.0.0.1:3306/demo1
c3p0.user=root
c3p0.password=zhjzhj945
- 在类目录下(src等 source folder下),添加一个c3p0-config.xml文件。