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

不使用数据库连接池

  1. 不使用工具类获取连接(以及注册驱动):

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

    1
    con=JDBCUtils.getconnection();

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
}

    配置文件:

1
2
3
4
url=jdbc:mysql:///db3
user=root
password=4719
driver=com.mysql.jdbc.Driver

使用数据库连接池

  1. 不使用工具类获取连接(注册驱动步骤隐藏):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //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();
  2. 使用工具类、配置文件获取连接(注册驱动步骤隐藏:

    1
    conn = JDBCUtils.getconnection();

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//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();
}

    配置文件:

1
2
3
4
5
6
7
8
9
10
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练习】查看表的方法——表的数据封装成对象并装载成集合

————————— 本文结束 感谢您的阅读 —————————
谢谢你请我喝咖啡ლↂ‿‿ↂლ(支付宝扫一扫即可领红包, 消费时可抵现! 你省钱, 我赚钱, 多谢支持~)