数据库连接池使用场景,工作原理和实现步骤

本文详细介绍了在大型高并发应用中使用数据库连接池的好处,包括限制连接数和减少MySQL连接创建开销。通过创建配置文件jdbc.properties,定义工具类BaseDao.java来实现连接池的初始化。此外,还讲解了在Tomcat中配置context.xml和web.xml以引用数据源,以及添加数据库驱动jar包的过程。最后展示了如何通过代码从连接池获取数据库连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用场景:

大型高并发应用里 
       使用连接池的好处:就是可以限制应用的连接数,另外,不用再额外地去创建每个连接,MySQL创建连接的开销也是较大的,因为创建一个新连接相当于MySQL创建了一个thread。

二、工作原理:

1,创建数据库配置文件jdbc.properties 

url =jdbc:mysql://localhost:3306/stu_score?serverTimezone=UTC
user = user_hyq
password = 123456
driver = com.mysql.cj.jdbc.Driver

 2,定义一个使用jdbc连接数据库的工具类BaseDao.java

public class BaseDao {
    public Connection conn = null;
    public PreparedStatement pstmt = null;
    public ResultSet rs = null;

    static String url = null;
    static String user = null;
    static String password = null;
    static String driver = null;


    // 使用静态块
    static {
        //构造对象
        Properties pro = new Properties();
        //构造流
        //  InputStream is=BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties");
        try {
            //加载配置文件
            pro.load(new FileReader("src/jdbc.properties"));

            //获取属性值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获得连接对象
     *
     * @return Connection
     */
    public Connection getConnection() {
        //第一步:加载驱动
        try {
            Class.forName(driver);
            //第二步:获取连接
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

三、实现步骤

1,配置tomcat中的conf--->context.xml

<Context> 
    <Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource" 
	 maxActive="100" maxIdle="30" maxWait="10000" username="newsu"
	 password="123456" driverClassName="com.mysql.jdbc.Driver"
	 url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?         
     useUnicode=true&amp;characterEncoding=utf-8" /> 
</Context>

2,配置web.xml

      注意:<res-ref-name><res-type> <res-auth>与配置context.xml时中的<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource" />一一对应

<resource-ref> 
	<res-ref-name>jdbc/news</res-ref-name>
	 <res-type>javax.sql.DataSource</res-type>
	 <res-auth>Container</res-auth> 
</resource-ref>

3,添加jar包

四、代码的编写

注意:DateSource包导入的是javax.sql.DataSource

    Context ctx = new InitialContext(); 
	DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news");
	conn = ds.getConnection();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值