JDBC数据库连接原理

JDBC数据库连接:

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法

 以下是实现数据库连接的代码。

public class DataBaseUtils {

	/*
	 * 得到数据库的连接对象
	 */
	public static java.sql.Connection getConnection(){
		//声明一个connection对象
		java.sql.Connection con=null;
		//如果为空则创建一个新的连接对象
		if(con==null){
			//定义访问数据的url(localhost代表本地地址,3307为数据库端口,myspl为数据库的‘类’)
			String url="jdbc:mysql://localhost:3307/mysql";
			//定义访问数据的用户名跟密码
			String userName="root";
			String userPwd="netjava";
			//创建数据的驱动类对象(数据库德驱动类在官网上有下载的)
			try {
				Class.forName("com.mysql.jdbc.Driver");
				try {
					con=java.sql.DriverManager.getConnection(url,userName,userPwd);
				} catch (SQLException e) {
					e.printStackTrace();
				}
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
		
		return con;
	}
}

 最后只要创建这个类的对象,然后调用getConnection方法后者直接使用DataBaseUtils.getConnection也可以跟数据库进行连接。

 

为什么会有池???

 

首先我们得知道数据库是一种关键的有限的资源,对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性以及程序的性能指标。

然后数据库连接池负责分配,管理和释放数据库的连接,它可以使应用程序重复使用一个现有的数据库连接,而不是重新建一个连接。

所以要通过连接池来提高数据库操作的性能。

 

 

 

JDBC数据库连接池原理

     数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的治理机制监视数据库的连接的数量 。

        当客户请求数据库连接时,首先查看连接池中是否有空闲连接(指当前没有分配出去的连接)。假如存在空闲连接,则把连接分配给客户并作相应处理(即标记该连接为正在使用,引用计数加1)。假如没有空闲连接,则查看当前所开的连接数是不是已经达到maxConn(最大连接数),假如没达到就重新创建一个连接给请求的客户;假如达到就按设定的maxWaitTime(最大等待时间)进行等待,假如等待maxWaitTime后仍没有空闲连接,就抛出无空闲连接的异常给用户。

        当客户释放数据库连接时,先判定该连接的引用次数是否超过了规定值,假如超过就删除该连接,并判定当前连接池内总的连接数是否小于minConn(最小连接数),若小于就将连接池布满;假如没超过就将该连接标记为开放状态,可供再次复用。可以看出正是这套策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。

        数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

        数据库连接池在个人访问数据库的时候没什么作用,但是在多人同时访问的时候,数据库连接池就可以发挥它的作用了。

 

 

你可能感兴趣的:(sql,mysql,jdbc)