解析原生JDBC开发问题与优化方案

Terwer MyBatis 后端开发评论247字数 1816阅读6分3秒阅读模式
摘要

本文介绍了在Java中使用JDBC进行数据库操作时可能遇到的问题,如数据库连接频繁创建释放、SQL硬编码、结果集解析困难等,并提出了解决方案。作者通过使用数据库连接池、将SQL语句抽取到配置文件、利用反射内省等技术来解决这些问题,从而提高了系统性能和代码可维护性。

问题分析

JDBC 问题总结

  • 原生 jdbc 开发存在的问题有哪些?文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html
    1. 数据库连接创建、释放频繁造成 系统资源浪费 ,从而影响系统性能;
    2. Sql 语句在代码中 硬编码 ,造成代码不易维护,实际应用中 sql 变化的可能较大,sql 变动需要改变 java 代码;
    3. 使用 preparedStatement 向占有位符号传参数存在硬编码 ,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护;
    4. 对结果集解析存在硬编码 (查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象来解析比较方便。

问题解决思路

  • 怎么解决 jdbc 开发存在的那些问题?文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html
    1. 使用 数据库连接池 来初始化连接资源;
    2. 将 sql 语句抽取到 xml 配置文件 中去;
    3. 使用 反射内省 等底层技术,自动将实体与数据库表进行属性与字段的自动映射。

核心实现

用具体的代码阐明 jdbc 开发遇到的问题?文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @author terwer
 * @Description
 * @create 2021-11-30 23:18
 */
public class Main {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 1、加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2、获取数据库链接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&useSSL=false", "root", "123456");

            // 3、定义sql语句
            String sql = "select * from user where username = ?";
            // 4、获取预处理对象
            preparedStatement = connection.prepareStatement(sql);
            // 5、设置参数
            preparedStatement.setString(1, "terwer");
            // 6、拿到查询的数据库结果
            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");

                User user = new User();
                user.setId(id);
                user.setUsername(username);

                System.out.println("user = " + user.toString());
            }

            // JDBC问题分析
            // 1、数据库链接信息等存在硬编码  解决:配置文件
            // 2、频繁创建释放数据库链接 解决:连接池(c3p0、druid)

            // 查询过程问题分析
            // 1、sql语句、参数、结果集存在硬编码 解决:配置文件

            // 结果集问题分析
            // 1、需要手动封装结果集 解决:反射进行对象映射、内省

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("释放资源");
        }
    }
}

mysql 驱动链接

mysql-connector-java-5.1.49.jar.zip文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

本文源码

Main.java文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

文章更新历史文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

2024/04/11 同步文章到其他平台文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

2023/08/24 优化闪卡文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

2023/01/02 修正源码路径错误问题文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

2022/03/16 校对完成文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

2022/03/06 初稿 文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

本文介绍了在Java中使用JDBC进行数据库操作时可能遇到的问题,如数据库连接频繁创建释放、SQL硬编码、结果集解析困难等,并提出了解决方案。作者通过使用数据库连接池、将SQL语句抽取到配置文件、利用反射内省等技术来解决这些问题,从而提高了系统性能和代码可维护性。文章源自浅海拾贝-https://blog.terwergreen.com/analyze-the-development-problem-and-optimization-plan-of-native-jdbc-zsccqc.html

相关文章
  • 扫码加我微信
  • 验证消息请输入:来自你的博客
  • weinxin
  • 我的微信公众号
  • 微信扫一扫与我交流吧
  • weinxin
Terwer
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: