文章目录

  • 前言
  • 一、连接池中我们需要什么样的jar包呢?
  • 二、了解连接池连接数据库的硬编译
  • 1.什么是硬编译?
  • 三.学会连接池连接数据库的软编译
  • 1.什么是软编译?
  • 总结



前言

连接数据库是Java编程中的常见操作,进阶操作包括以下几个方面:
1. 使用连接池:连接池是一种管理数据库连接的技术,它能够提高程序的性能和稳定性。使用连接池可以避免频繁地创建和销毁连接,从而减少数据库的负担和线程的阻塞。
2. 使用JDBC事务:JDBC事务可以确保一组数据库操作要么全部成功,要么全部失败。通过使用事务,可以保证数据的一致性和可靠性,避免出现数据不一致的情况。
3. 使用ORM框架:ORM框架可以将Java对象和数据库表进行映射,使得程序员可以通过面向对象的方式来操作数据库,而不需要直接编写SQL语句。使用ORM框架可以提高开发效率和代码质量。
4. 使用缓存:缓存是一种将数据存储在内存中的技术,可以加快数据的访问速度。在Java连接数据库的进阶操作中,使用缓存可以降低数据库的负担,提高程序的性能。
而我们本篇文章就来讲解一下然后使用连接池连接我们的数据库。


一、连接池中我们需要什么样的jar包呢?

说到用连接池连接数据库,我们就不得不提到国货之光-Druid了。

Druid是一种开源的分布式数据存储和查询系统,可以用于处理大规模的数据集并提供实时查询和分析。它可以处理多维度的数据,包括时间序列数据、事件数据和实时流数据等。Druid的设计目标是为了快速查询和分析大规模的数据集,它采用了列式存储和内存计算等技术来实现高性能、低延迟的数据查询和分析。Druid还提供了丰富的查询API和可视化工具,方便用户进行数据分析和可视化展示。由于其优秀的性能和灵活的架构,Druid已经被广泛应用于业务智能、实时监控、日志分析和推荐系统等领域。

而我们使用的jar包就是druid的jar包了。

这个jar包的下载路径就在这哦!!

java 数据库并发更新 java并发操作数据库_数据库


不要下载错了哦!!我们将其复制,粘贴找我们lib文件的目录下。

java 数据库并发更新 java并发操作数据库_数据库_02


java 数据库并发更新 java并发操作数据库_java 数据库并发更新_03



二、了解连接池连接数据库的硬编译

1.什么是硬编译?

连接池连接数据库的硬编译则是一种优化技术,它可以将连接池中的连接在编译时就与数据库建立好连接,从而避免了每次请求连接时的额外开销,提高了数据库访问的效率。这种优化技术需要在代码中进行硬编译,而不是在运行时进行动态连接。

//连接数据库的硬编码
    @Test
    public void testHard() throws Exception {
        //连接池对象
        DruidDataSource dataSource = new DruidDataSource();

        //设置参数
        //必须  连接数据库驱动类的全限定符[注册驱动] | url | user | password
        dataSource.setUrl("jdbc:mysql://localhost:3306/atguigu");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        //非必须 初始化数据量,最大连接量......
        dataSource.setInitialSize(5);
        dataSource.setMaxActive(10);

        //获取连接
        DruidPooledConnection connection = dataSource.getConnection();

//******************************************************************
        //数据库操作,这里的内容是演示,仅供参考
        String sql = "select * from t_user";
        PreparedStatement statement = connection.prepareStatement(sql);
        ResultSet resultSet = statement.executeQuery();
        ResultSetMetaData metaData = resultSet.getMetaData();
        int columnCount = metaData.getColumnCount();

        List<Map> list = new ArrayList<>();

        while (resultSet.next()){
            Map map = new HashMap();

            for (int i = 1; i <= columnCount; i++) {
                Object object = resultSet.getObject(i);
                String columnLabel = metaData.getColumnLabel(i);
                map.put(columnLabel,object);
            }
            list.add(map);
        }
        System.out.println("list = " + list);
//****************************************************************
        //回收连接
        connection.close();
    }

可以看到我们的结果是:

list = [{password=123456, nickname=经理, id=1, username=admin}, {password=111, nickname=管理员, id=2, username=jjcc}, {password=123456, nickname=三狗子, id=4, username=test_1}]

三.学会连接池连接数据库的软编译

1.什么是软编译?

软编译则是指在编译时动态链接一些库文件,使得程序在运行时可以动态加载这些库文件,从而减少程序的内存占用和提高程序的运行效率。在连接池连接数据库时,软编译可以帮助减少每个连接所占用的内存空间,提高连接池的性能和效率,从而更好地管理和维护数据库连接。

在进行软编译时,我们需要先创建一个druid.properties的文件。

java 数据库并发更新 java并发操作数据库_java 数据库并发更新_04


建议与scr同目录,我们后面会使用类加载器加载这个文件。

文件内容:

# druid连接池需要的配置参数,key固定命名
driverClassName=com.mysql.cj.jdbc.Driver
username=账号
password=密码
url=jdbc:mysql:///数据库名

那么,我们如何使用这个文件呢?
请看代码:

/**
     * 通过读取外部文件的方法,实例化druid连接池对象
     */
    @Test
    public void testSoft() throws Exception {
        //1.读取外部配置文件
        Properties properties = new Properties();

        //scr下的文件,可以使用类加载器提供的方法
        InputStream resourceAsStream = testDruid.class.getClassLoader().getResourceAsStream("druid.properties");

        //2.使用连接池的工具类的工程模式,创建连接池
        properties.load(resourceAsStream);

        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

        Connection connection = dataSource.getConnection();
//***********************************************************************************
        //数据库操作,内容仅供参考
        String sql = "select * from t_user";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        ResultSetMetaData metaData = resultSet.getMetaData();
        int columnCount = metaData.getColumnCount();

        List<Map> list = new ArrayList<>();

        while (resultSet.next()){
            Map map = new HashMap();

            for (int i = 1; i <= columnCount; i++) {
                Object object = resultSet.getObject(i);
                String columnLabel = metaData.getColumnLabel(i);
                map.put(columnLabel,object);
            }
            list.add(map);
        }
        System.out.println("list = " + list);
//**********************************************************************************
        connection.close();
    }
}

让我们看看其结果如何:

list = [{password=123456, nickname=经理, id=1, username=admin}, {password=111, nickname=管理员, id=2, username=jjcc}, {password=123456, nickname=三狗子, id=4, username=test_1}]

总结

使用连接池连接数据库可以有效地提高程序的性能和稳定性。连接池是一个缓存数据库连接的池子,应用程序可以从中获取连接,使用完毕后将连接归还给池子。这样可以避免每次操作数据库都需要新建连接的开销,提高了数据库的访问效率。同时,连接池可以控制连接数目,避免过多的连接占用数据库资源,从而保证数据库的稳定性。总之,使用连接池连接数据库可以使程序更加高效稳定。