0驱动什么是数据库驱动
开发人员编写好应用程序之后想要操作数据库,平常就了解到有很多种数据库如oracle\mysql\sql server,代码已经写好了是一套总不能在使用不同的数据库技术的时候代码就要写不同方式连接来连接数据库吧,所以开发商在开发数据库软件的时候都按照同一份标准:应用程序和数据库之间进行交互的规则标准,粗糙的说就是厂商把要连接的工具等都放进驱动包里,开发人员找这个驱动包就行了。
那多种驱动包谁来管理呢-》jdbc
1什么是jdbc
应用程序与数据库之间的交互需要一个中间人来操作,这个中间人就是jdbc【java database connection】-》实质就是java API,也就是一系列接口,开发人员编写好应用程序之后,直接调用这些接口来操作数据库即可。
jdbc与驱动的关系:mysql厂商提供mysql驱动,这个驱动是mysql厂商根据jdbc提供的接口编写访问mysql数据库的方法。jdbc与驱动的关系
由于数据库的厂商多样性导致了jdbc与不同数据库交互需要一个统一的“管理员”-》jdbc driver manager。也就是不仅要有管理各个不同数据库驱动的功能,也知道怎么与数据库打交道。
driver manager能干什么
注意:DriverManager 用于创建连接,但它不直接支持连接池功能。-》第三方连接池库,如 Apache Commons DBCP、C3P0 或 HikariCP****
JDBC不仅需要提供访问数据库的API,还需要封装与各种数据库服务器通信的细节
从上图中可以看出,JDBC的实现包括三部分。
(1)JDBC驱动管理器:负责注册特定的JDBC驱动器,主要通过java.sql. Driver Manager类实现。
(2)JDBC驱动器API:由Sun公司负责制定,其中最主要的接口是java.sql. Driver接口。
(3)JDBC驱动器:它是一种数据库驱动,由数据库厂商创建,也称为JDBC驱动程序JDBC驱动器实现了JDBC驱动器API,负责与特定的数据库连接,以及处理通信细节。
刚开始学习的时候一定写过这样的代码,这就是最开始的在应用程序中使用jdbc的原始方式
//1.注册数据库的驱动
//或者直接通过反射Class.forName("com.mysql.jdbc.Driver")
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.通过 DriverManager获取数据库连接Connection
String url=" ";
String usernames=" ";
String password=" ";
Connection conn=DriverManager.getConnection(url, username, password);
//3.通过 Connection对象获取 Statement对象
Statement stmt= conn.createStatement();
//4.创建sql语句,处理结果集,关闭结果集
2数据库连接池是什么理解数据库连接池
有多个访问请求的时候总不能一直连接一直释放吧,这时候就产生了连接池。解决资源频繁分配/释放的问题-》为数据库建立连接池(相当于缓冲区)。
查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接
jdbc的数据库连接池使用datasource【数据源】=》是个接口,所有的java数据库连接池都要来实现这个接口。使用连接池来管理数据库连接,以减少连接的创建和销毁开销,提高应用程序的性能和响应速度。
常见的第三方连接池:DBCP,C3P0,Proxool,HikariCP,Druid