JavaWeb:连接池pool

连接池是一种数据库连接管理技术

连接池是具有容器功能的的对象,当应用加载时,自动创建若干数据库连接对象并放入连接池中

当需要访问数据库时,从连接池中取出连接对象,而非自行创建连接对象,使用完毕后放入连接池,而非关闭。


连接池优点:1、减少创建连接时间,提高系统性能,

   2、资源使用集约化:使用有限数量的数据库连接,降低资源占用,重复利用数据库连接,提高了资源的利用率

   3、简化的编程模式,提高开发效率

常用的连接池:DBCP、,c3p0,proxool,

常用的连接池参数:连接池名称,数据库驱动名,url,账户,密码,连接池最大连接,连接池最小连接,连接超时

=======================================================================================================================


JNDI(Java Naming and Directory Interface)即Java程序命名和目录接口。

JNDI的作用

为对象命名,实现名称和对象的对应。


应用开发者需要对象时,通过名称就能够查找到对象,进而调用这个对象的方法。


JavaEE服务器提供了JNDI的功能,即提供了Java命名和目录服务。

=====================================================================================================================

public class TestPool

{

public static void main (String[] args)

{

DataSource ds = null;


//PrintWriter log = null; //uncomment to turn on logging

try

{

//log = new PrintWriter(new FileWriter("dblog"), true); //uncomment to turn on logging

Properties p = new Properties();

p.setProperty("logLevel", "1"); //debug = 4, info = 3, warn = 2, error = 1, fatal = 0 日志标准

p.setProperty("autoCommit", "false");  自动提交

p.setProperty("description", "Oracle"); 数据库名

p.setProperty("driverClass", "oracle.jdbc.driver.OracleDriver");  驱动类

p.setProperty("maxCount", "2");最大连接

p.setProperty("minCount", "1");最小连接

p.setProperty("user", "test"); 

p.setProperty("password", "test");

p.setProperty("url", "jdbc:oracle:thin:@127.0.0.1 :1565:test"); url

p.setProperty("loginTimeout", "0"); //in seconds

p.setProperty("holdTimeout", "1000"); //in seconds    持续超时

p.setProperty("waitTimeout", "10000"); //in milliseconds  最大等待超时时间

p.setProperty("checkQuery", "select SYSDATE from dual");

p.setProperty("statementCacheSize", "10");  缓存大小

//ds = new RPDataSource(p, log); //use this instead of the next line to turn on logging

ds = new RPDataSource(p);

Connection con = ds.getConnection();

Statement s = con.createStatement();

ResultSet rs = s.executeQuery("select SYSDATE from dual");

if (rs.next())

{

System.out.println (rs.getString(1));

}

rs.close();

s.close();

con.close();

con = ds.getConnection();

s = con.createStatement();

rs = s.executeQuery ("select SYSDATE from dual");

if (rs.next())

{

System.out.println (rs.getString(1));

}

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

try

{

RPDataSource rp = (RPDataSource)ds;

rp.destroy();

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

}


转载于:https://my.oschina.net/u/2542946/blog/539673

你可能感兴趣的:(数据库,java)