数据源与连接池

来源:互联网 发布:淘宝明通数码科技公司 编辑:程序博客网 时间:2024/06/07 05:28
  • 连接池和连接源

连接池提供了一种连接时资源被消耗的解决方案,通过数据源来获得连接池中的一个连接。应用程序启动的时候,连接池建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请、使用和释放。如果并发请求的连接数大于连接池中的连接,那么该请求将在请求队列中排队等待。另外,应用程序可以根据池中连接的使用率,动态增加或者减少池中的连接数。

连接池技术尽可能的重用消耗内存的资源,大大节省了内存,提高了服务器的服务效率,能够支持更多的客户服务。同时,可以通过其自身的管理机制,来监视数据库连接的数量和使用情况。

DataSource接口代表了数据源,可以通过这个接口来获得连接池中的一个连接,一般由数据库驱动程序厂商实现。

  • 简单实例

1.在WEB-INF的同级目录META-INF文件夹下配置context.xml


<?xml version="1.0" encoding="UTF-8"?><Context><!-- Resource定义数据源 ※name 数据源的名字auth 由容器创建和管理Resource※type 数据源类型※ username 数据库用户名称※ password 数据块用户密码 maxIdle 最大数据库空闲连接数量   maxActive 数据库最大活跃连接数量     maxWait 数据库最大等待连接数量※ driverClassName 数据库连接驱动类名※ url 数据库连接的URL地址--><Resource name = "jdbc/DbPool"   auth = "Container"type = "javax.sql.DataSource"username = "root"password = "123456"maxIdle = "30"maxActive = "100"maxWait = "5000"driverClassName = "com.mysql.jdbc.Driver"url = "jdbc:mysql://localhost:3306/user"/></Context>


2.建立DbPool.java,并在该类中访问数据源,实现对数据库的连接

package org;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import javax.naming.Context;import javax.naming.InitialContext;import javax.sql.DataSource;public class DbPool {private  Connection conn;public void createConn() {//定义连接数据源的方法try {//初始化ContextContext initCtx = new InitialContext();Context envCtx = (Context) initCtx.lookup("java:comp/env");//获得数据源DataSource ds = (DataSource) envCtx.lookup("jdbc/DbPool");//获得连接对象conn = ds.getConnection();System.out.println("SUCCESS");} catch (Exception e) {e.printStackTrace();System.out.println("ERROR");}}public ResultSet executeQuery(String sql) {ResultSet rs = null;if (conn == null) {createConn();}try {PreparedStatement pst = this.conn.prepareStatement(sql);rs = pst.executeQuery();} catch (Exception e) {e.printStackTrace();}return rs;}}

3.建立dbPool.sp

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB2312"%><%@ page import="org.DbPool" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  <title>使用数据源</title>  </head>   <body >    <jsp:include page="index.html"></jsp:include>    <%    DbPool dbp = new DbPool();    String sql = "select * from person";    ResultSet rs = dbp.executeQuery(sql);    while(rs.next()){    out.print(rs.getInt(1));    out.print("      ");    out.print(rs.getString(2));    out.print("      ");    out.print(rs.getInt(3));    out.print("      ");    out.print(rs.getString(4));    out.print("<br/>");    }        %>  </body></html>




0 0
原创粉丝点击