栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb学习笔记(十六)之连接池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb学习笔记(十六)之连接池

所有连接池的思路

1.硬编码,某个连接池数据源的对象

ds = new XxxDataSource();
ds.setXxx();
return ds;

2.配置文件

ds = new XxxDataSource();
加载配置文件
return ds;

数据源工具类

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class DBUtils {

    //C3P0数据源
    public class C3p0Util {
        public static ComboPooledDataSource ds = null;

        //初始化C3P0数据源
        static {
            ComboPooledDataSource cpds = new ComboPooledDataSource();
            //设置连接数据库需要的配置信息
            try {
                cpds.setDriverClass("com.mysql.jdbc.Driver");
                cpds.setJdbcUrl("jdbc:mysql://localhost:3306/shop");
                cpds.setUser("root");
                cpds.setPassword("root");
                //设置连接池的参数
                cpds.setInitialPoolSize(5);//初始连接数目
                cpds.setMaxPoolSize(15);//最大连接数目
                ds = cpds;
            } catch (Exception e) {
                throw new ExceptionInInitializerError(e);
            }
        }

        //返回数据源
        public static ComboPooledDataSource getDataSource() {
            return ds;
        }
    }

    //Druid数据源
    public static class DruidUtil {
        private static Properties properties = null;
        private static DataSource dataSource = null;
        private volatile static DruidUtil instatce = null;
        private Connection connection = null;

        //私有构造函数,防止实例化对象
        private DruidUtil() {

        }


        static {
            try {
                properties = new Properties();
                // 1.加载properties文件
                InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");

                // 2.加载输入流
                properties.load(is);

                // 3.获取数据源
                dataSource = getDatasource();

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

        //用简单单例模式确保只返回一个链接对象
        public static DruidUtil getInstace() {
            if (instatce == null) {
                synchronized (DruidUtil.class) {
                    if (instatce == null) {
                        instatce = new DruidUtil();
                    }
                }
            }
            return instatce;
        }

        // 返回一个数据源
        public DataSource getDataSource() {
            return dataSource;
        }

        // 返回一个链接
        public Connection getConnection() {
            try {
                connection = dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }

        // 加载数据源
        private static DataSource getDatasource() {
            DataSource source = null;
            try {
                source = DruidDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return source;
        }
    }


    public class DbcpUtils {

        private static DataSource ds = null;

        private DbcpUtils() {
        }

        static {
            try {
                //获得配置文件路径
                InputStream is = DbcpUtils.class.getClassLoader().getResourceAsStream("dbcp.properties");
                //加载配置文件
                Properties props = new Properties();
                props.load(is);
                //创建数据源对象
                ds = BasicDataSourceFactory.createDataSource(props);
                //关闭输入流
                is.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }

        public static void close(ResultSet rs, Statement st, Connection conn) {
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490763.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号