【www.gdgbn.com--数据库应用】

一个数据库缓冲池指的是缓存于内存空间中的数据库物理连接,这些数据库连接可以被重复使用。数据库缓冲池对于提高Java 数据库应用程序的性能十分重要,尤其是当这个Java 数据库应用程序运行于中间层服务器环境时。
数据缓冲池存在于中间层服务器环境当中,可以被不同的Java 应用程序所调用。javax.sql.RowSet 包添加了对缓冲数据源的支持,即可以将缓冲池缓冲的数据库连接看作是一个是实实在在的数据源服务来使用。RowSet 包提供了好几个接口用于处理数据库缓冲池,主要的接口有:
1、DataSource 接口:DataSource 接口的实例对象代表了存在于中间层服务器中的缓冲数据源服务。使用它可以返还数据库缓冲池中现存的数据库连接,DataSource 接口的实例对象实际上是某个JNDI 服务的提供者,在使用它之前,该JNDI 服务对象必须先在中间层服务器环境中注册,并且和某个服务名绑定在一起,然后它才能被别的Java 应用程序调用。
2、ConnectionPoolDataSource 接口:该接口可以用于创建一个被缓冲于缓冲池的数据库物理连接,它有可能会被DataSource 接口的实例对象调用。
3、PooledConnection 接口:该接口代表被缓冲的数据库连接,它定义了一个getConnection()方法使用这个方法可以返回java.sql.Connection 接口的实例对象。
如何使用RowSet 包定义的类和接口操作数据库缓冲池,下面的JSP 代码段提供了一个简单的不完整的例子

<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);
// First get a Connection. Connection pooling is done
// internally by the DataSource object.
Connection con = ds.getConnection(jdbc/webDatabase” "sa” “");
// Do all the work as a single transaction (optional).
con.setAutoCommit(false);
// The actual work (queries and updates) would go here.
// Work is done using standard JDBC code as defined in the
// rest of the JDBC API.
// Commit the transaction.
con.commit();
// Close the connection. This returns the underlying physical
// database connection to the pool.
con.close();
%>
上面的JSP 代码段的运行机理如下
???? 1、首先程序代码获取初始化的JNDI 环境并且调用Context.lookup()方法从JNDI服务提供者那里获一个DataSource 对象

本文来源:http://www.gdgbn.com/asp/6381/