java配置数据库连接池的方法步骤
java 配置数据库连接池的方法步骤
先来了解下什么是数据库连接池
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个 Vector 对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。
在实际应用开发中,特别是在 WEB 应用系统中,如果 JSP、Servlet 或 EJB 使用 JDBC 直接访问数据库中的数据,每一次数据访问请
求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操
作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例
如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
配置步骤:
1. 在 Tomcat conf/content.xml 中 <Context> 节点内添加如下内容
<Resource name="jdbc/news"
auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="sa" password="120010"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=news"/>
name: 之后我们要调用 resource 时候用到
type: 是链接数据库时候用到的 java 扩展包下的类
maxActive: 最大连接数
maxIdle: 是空闲时候最大连接数
maxwait: 空闲判断标准
注意:
1). 该配置文件里不允许有中文;各个属性间的用一个空格隔开
2). 要将对应链接数据库的 jar 包放到 tomcat /lib 文件夹中工程中就不需要存放了
下面还中是链接 oracle 的
<Resource type="javax.sql.DataSource" name="jdbc/news" url="jdbc:oracle:thin:@192.168.2.102:1521:orcl" driverClassName="oracle.jdbc.driver.OracleDriver" password="bg" username="test" maxWait="10000" maxIdle="30" maxActive="100" auth="Container"/>
2. 在工程的 web.xml 中添加如下代码
<resource-ref>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这里 <res-ref-name> 标签里面的名字就是在 content.xml 文件中的 name 的名字
3. 得到数据库连接池中的 Connection 对象
Context context=new InitialContext();
DataSourceds=(DataSource)context.lookup("java:comp/env/jdbc/news");
Connectionconn = ds.getConnection();
注意:context 是 javax.namingx 下的类,dataSource 是 javax.sql 下的类 ,"java:comp/env/jdbc/news" 中:java:comp/env 是固定写法 jdbc/news 是 jndi 名称(Tomcat 中配置的那个 name)
如果我们不是在 web.xml 中配置数据源,我们用 spring 来控制数据库链接方法步骤:
1). 在配置文件中添加如下节点
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/news"/>
</bean>
配置好了获取 sql 语句查询数据有多少条:
调用的时候直接 Dao 类继承 JdbcDaoSupport 类(spring.jar 中的类)
int count = this.getJdbcTemplate().queryForInt("select * from users");