• 数据源和连接池


    数据源是用来连接数据库,获得Connection对象的,在java中使用javax.sql.DataSource接口来表示。

    有了数据源,我们就不须要在编写其它连接数据库代码,直接从数据源中获取连接就能够了,并且。无论使用什么样的数据库,都是用一样的方式获取数据库连接对象。

    数据源对象一般由容器创建的。在程序中能够使用JNDI来获取。

    通过数据源创建的连接对象能够被自己主动的放入连接池统一管理。

    连接池是用来管理Connection对象的,连接池能够从数据源中获取连接,连接池中能够有若干个数据库连接对象。这些连接对象能够被重用。

    应用程序须要连接时就向连接池申请。假设连接池有空暇的连接,就会分配给应用程序,假设没有。可能须要在等待队列里等待。

    而假设从连接池中获得一个连接对象,等到使用完成后,通过调用Connection的close()方法,就能将连接还给连接池,这样这个连接对象就又编程空暇的了,能够等待下一次连接请求。而连接池中的连接对象将一直保持与数据库的连接。这样就避免了频繁的连接盒关闭。可是这些连接对象会占用一定的内存空间。所以我们要依据数据库的并发訪问量,和server的硬件条件来认为连接池中的最大连接数。

    数据源和连接池一个是用来创建连接对象的。一个是用来管理连接对象的。

    在Tomcat中使用数据源能够使用例如以下步骤:

    1、在Tomcat中增加数据库驱动文件,在Tomcat的lib文件夹下导入数据库驱动包。

    2、配置Tomcat的conf/context.xml文件,在该文件里增加例如以下代码:

    <Context>
    	<Resource name="jdbc/books" auth="Container" type="javax.sql.DataSource"
    	maxActive="100" maxIdle="30" maxWait="10000" username="myhr" password="myhr"
    	driverClassName="oracle.jdbc.OracleDriver"
    	url="jdbc:oracle:thin:@localhost:1521:orcl"/>
    </Context>

    name:指定Resource的JNDI名称。auth:指定管理Resource的Manager(Container:由容器创建和管理,Application:由WEB应用创建和管理)。type:指定Resource所属的java类。

    maxActive指定连接池中处于活动状态的数据库连接的最大数目。maxIdle:指定连接池中处于空暇状态的数据库连接的最大数目。

    maxWait:指定连接池中处于空暇的最长时间,超过这个时间会抛出异常,取值为-1表示无限期等待。

    3、使用JNDI获取连接对象。

    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    public class JNDIConnection {
    	public Connection JNDIgetConnection() {
    		Connection conn = null;
    		Context ic;
    		try {
    			ic = new InitialContext();
    			DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/books");
    			conn = ds.getConnection();
    		} catch (NamingException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    }
    

    这时我们就能够使用连接对象。而且对数据库进行一系列操作。

  • 相关阅读:
    实验五——循环结构学习总结
    对象判等
    一个转行的程序员给我们的忠告,很中肯
    自定义异常类
    Python入门系列(一):感言
    Python入门系列(三):基本概念
    Python入门系列(二):环境搭建(基于Windows)
    Python入门系列(四):运算符与表达式
    JQuery前奏:特性简介
    JQuery对象与DOM对象互相转换
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6748585.html
Copyright © 2020-2023  润新知