一、什么是数据库连接池
一、什么是数据库连接池
在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源。这是因为在Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,Java程序则要把代表连接的java.sql.Connection对象等加载到内存中,所以建立数据库连接的开销很大。尤其是在大量的并发访问时,假如某网站一天的访问量是10万,那么,该网站的服务器就需要创建、断开连接10万次,频繁地创建、断开数据库连接势必会影响数据库的访问效率,甚至导致数据库崩溃。
为了避免频繁地创建数据库连接,工程师们提出了数据库连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。接下来,通过一张图来简单描述应用程序如何通过连接池连接数据库,如图所示。
从图中可以看出,数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,当应用程序访问数据库时并不是直接创建Connection,而是向连接池“申请”一个Connection。如果连接池中有空闲的Connection,则将其返回,否则创建新的Connection。使用完毕后,连接池会将该Connection回收,并交付其他的线程使用,以减少创建和断开数据库连接的次数,提高数据库的访问效率。
下面我们来看看Druid(德鲁伊)连接池的使用方法。
二、首先在pom文件中添加Druid连接池的依赖
三、在resource目录中添加一个数据库的连接配置文件 jdbc.properties
url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true driver=com.mysql.cj.jdbc.Driver username=root password=wanmait
四、添加一个数据库帮助类 DBUtils
private static DataSource dataSource; static{ InputStream is= Utils.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties=new Properties(); try{ properties.load(is); dataSource= DruidDataSourceFactory.createDataSource(properties); } catch(Exception e){ e.printStackTrace(); } } public static Connection getConn() { try{ return dataSource.getConnection(); } catch (Exception e){ throw new RuntimeException("连接池出现异常"); } }
这样就可以通过 getConn()方法从数据库连接池中获得连接了。
0条评论
点击登录参与评论