【JDBC】使用/不使用数据库连接池获取连接对比

不使用数据库连接池

  1. 不使用工具类获取连接(以及注册驱动):
//注册驱动
Class.forName("com.mysql.jdbc.Driver");//把要注册的驱动加载进内存
//获取数据库连接对象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "4719");
  1. 使用工具类、配置文件获取连接(以及注册驱动):
con=JDBCUtils.getconnection();

工具类代码(加载配置文件、注册驱动、获取连接部分):

private static String url;
private static String user;
private static String password;
private static String driver;

/**
 * 静态代码块:随着类的加载而加载,只执行一次。用来读取配置文件的信息,并注册驱动
 */
static {
    try {
        //创建Properties集合类对象
        Properties pro = new Properties();
        //获取src路径下的文件的方式--->classLoader类加载器
        //classLoader可以加载字节码文件进内存,并且可以获取资源路径
        //通过类JDBCUtils获得JDBCUtils的类加载器,再通过getResource获得配置文件的资源路径(非配置文件存储路径)
        String path = JDBCUtils.class.getClassLoader().getResource("jdbc.properties").getPath();
        //加载配置文件
        pro.load(new FileReader(path));
        //获取数据,并赋值
        url = pro.getProperty("url");
        user = pro.getProperty("user");
        password = pro.getProperty("password");
        driver = pro.getProperty("driver");
        //注册驱动
        Class.forName(driver);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

/**
 * 获取连接
 * @return 连接对象
 */
public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(url, user, password);
}

配置文件:

url=jdbc:mysql:///db3
user=root
password=4719
driver=com.mysql.jdbc.Driver

使用数据库连接池

  1. 不使用工具类获取连接(注册驱动步骤隐藏):
//1.导入jar包
//2.定义配置文件
//3.加载配置文件
Properties pro = new Properties();
InputStream is = DruidDemo01.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//4.获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5.获取连接
Connection conn = ds.getConnection();
  1. 使用工具类、配置文件获取连接(注册驱动步骤隐藏:
conn = JDBCUtils.getconnection();

工具类代码(加载配置文件、获取连接部分):

//1.定义成员变量 DataSource
private static DataSource ds;

//静态代码块:加载配置文件,初始化连接池对象
static{
    try {
        //1.加载配置文件
        Properties pro = new Properties();
        pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
        //2.获取DataSource
        ds = DruidDataSourceFactory.createDataSource(pro);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

//获取连接
public static Connection getConnection() throws SQLException {
    return ds.getConnection();
}

配置文件:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db3
username=root
password=4719
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
#最大等待时间
maxWait=3000

总结对比

使用数据库连接池的缺点:

  1. 每次都需要向操作系统底层申请连接,用完再释放,效率低下。
  2. 配置文件的数据要手动获取,再用DriverManager.getConnection()获取连接,代码复杂。

使用数据库连接池的优点:

  1. 数据池获取连接,节约资源,用户访问高效。
  2. 自动读取配置文件的数据,获取连接,代码简洁。

画图板整理原件

在这里插入图片描述

相关文章推荐

【JDBC练习】使用用户名和密码登录
【JDBC练习】查看表的方法——表的数据封装成对象并装载成集合


版权声明:本文为weixin_43971764原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。