当前位置: 首页 > news >正文

基于JDBC的信息管理系统,那么什么是JDBC呢?什么又是DAO类?

1.JDBC

JDBC 即 Java Database Connectivity,是 Java 语言中用于与数据库进行交互的一套 API。它提供了一种标准的方式,让 Java 程序能够连接到各种不同类型的数据库,并执行 SQL 语句来实现对数据库的查询、插入、更新和删除等操作。

主要功能

  • 建立连接:通过加载数据库驱动程序,使用DriverManager类的getConnection方法与数据库建立连接。例如连接 MySQL 数据库,需先加载 MySQL 驱动,再通过指定的 URL、用户名和密码获取连接对象。
  • 执行 SQL 语句:利用StatementPreparedStatement等接口创建 SQL 语句对象,并执行 SQL 语句。Statement用于执行简单的 SQL 语句,PreparedStatement能防止 SQL 注入攻击,且性能更好,常用于带参数的 SQL 语句执行。
  • 处理结果集:当执行查询语句后,会返回ResultSet结果集对象,可通过该对象遍历和获取查询结果的数据。

优势

  • 跨数据库平台:由于 JDBC 是 Java 的标准 API,基于 JDBC 开发的程序可以在不同的数据库系统上运行,只需更换相应的数据库驱动即可,具有很高的可移植性。
  • 面向对象的操作:JDBC 以面向对象的方式来操作数据库,将数据库连接、SQL 语句执行、结果集处理等操作封装成对象和方法,使代码更易理解和维护。

2.DAO

DAO 是数据访问对象(Data Access Object)的缩写,DAO 类是一种在软件开发中用于封装与数据库交互操作的类。以下是其详细介绍:

作用

  • 解耦数据访问层与业务逻辑层:使业务逻辑代码专注于实现业务功能,而不必关注数据库操作的细节,如连接数据库、执行 SQL 语句、处理结果集等。当数据库类型或数据库操作方式发生变化时,只需在 DAO 类中进行修改,而不影响业务逻辑层的代码。
  • 提高代码的可维护性和可扩展性:将数据访问相关的代码集中在 DAO 类中,便于对数据库操作进行统一管理和维护。如果需要增加新的数据访问功能或修改现有功能,只需要在相应的 DAO 类中进行修改或添加方法,而不会影响到其他模块的代码。

常见操作方法

  • 创建:向数据库中插入新的数据记录。
  • 读取:从数据库中查询数据,可以根据不同的条件进行查询,如根据主键查询特定记录、查询符合某些条件的记录集合等。
  • 更新:修改数据库中已有的数据记录。
  • 删除:从数据库中删除指定的数据记录。

示例

以 Java 语言为例,假设存在一个User表,包含idnameage字段,以下是一个简单的UserDAO类示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class UserDAO {// 数据库连接URLprivate static final String URL = "jdbc:mysql://localhost:3306/mydb";// 数据库用户名private static final String USERNAME = "root";// 数据库密码private static final String PASSWORD = "password";// 插入用户public void insertUser(User user) {String sql = "INSERT INTO users (name, age) VALUES (?, ?)";try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, user.getName());pstmt.setInt(2, user.getAge());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}// 查询用户public User getUserById(int id) {String sql = "SELECT * FROM users WHERE id = ?";try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setInt(1, id);ResultSet rs = pstmt.executeQuery();if (rs.next()) {return new User(rs.getInt("id"), rs.getString("name"), rs.getInt("age"));}} catch (SQLException e) {e.printStackTrace();}return null;}
}

在上述代码中,UserDAO类提供了insertUsergetUserById方法,分别用于向数据库中插入用户数据和根据用户 ID 从数据库中查询用户数据。它通过java.sql包中的相关类来实现与数据库的连接、SQL 语句的执行以及结果集的处理。

3.DAO 类和 JDBC联系区别

DAO 类和 JDBC 是 Java 数据访问层中密切相关但又有明确分工的两个概念,以下是它们的联系与区别:

一、联系

  1. DAO 依赖 JDBC 实现数据访问
    DAO 类是数据访问的抽象接口,而 JDBC(Java Database Connectivity)是 Java 访问数据库的具体技术。DAO 类的方法(如增删改查)通常需要通过 JDBC 来执行 SQL 语句,与数据库交互。

  2. JDBC 是 DAO 的底层实现手段
    DAO 类的实现类中会包含大量 JDBC 代码,如获取数据库连接、创建 Statement 对象、执行 SQL、处理结果集等。例如:

    java

    // DAO实现类中的JDBC代码示例
    try (Connection conn = DriverManager.getConnection(url, user, password);PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?")) {stmt.setInt(1, userId);ResultSet rs = stmt.executeQuery();// 处理结果集...
    } catch (SQLException e) {e.printStackTrace();
    }
    
  3. 分层设计中的协作关系

    • DAO 层:负责定义数据访问接口,抽象业务需求(如 “获取用户信息”)。
    • JDBC:负责实现这些接口,处理底层数据库操作细节。

二、区别

维度DAO 类JDBC
概念本质设计模式(数据访问对象),属于架构层面的抽象。技术规范(Java API),属于具体实现工具。
职责封装业务逻辑对数据的操作需求,提供面向对象的接口(如getUserById())。提供底层 API(如ConnectionStatement),直接操作数据库。
代码位置通常位于dao包下,作为接口或抽象类存在(如UserDAO.java)。通常在 DAO 的实现类中(如UserDAOImpl.java),或封装在工具类中。
关注点业务语义(如 “保存用户”),不关心 SQL 语句和数据库类型。技术细节(如 SQL 语法、事务管理、连接池配置)。
可移植性与数据库无关,易于切换数据库(如从 MySQL 切换到 Oracle)。依赖具体数据库驱动,SQL 语句可能需要调整(如分页语法)。

三、示例对比

1. DAO 接口(抽象业务需求)
public interface UserDAO {User getUserById(int id);void saveUser(User user);
}
2. DAO 实现类(使用 JDBC 实现)
public class UserDAOImpl implements UserDAO {@Overridepublic User getUserById(int id) {// JDBC代码:获取连接、执行查询、封装结果try (Connection conn = JdbcUtils.getConnection();PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?")) {stmt.setInt(1, id);ResultSet rs = stmt.executeQuery();if (rs.next()) {return new User(rs.getInt("id"), rs.getString("name"));}} catch (SQLException e) {throw new RuntimeException("数据库查询失败", e);}return null;}
}
3. JDBC 工具类(封装底层操作)
public class JdbcUtils {public static Connection getConnection() throws SQLException {return DriverManager.getConnection(URL, USERNAME, PASSWORD);}// 其他工具方法(关闭资源、事务管理等)
}

四、总结

  • DAO 类:是一种设计模式,用于抽象和封装数据访问逻辑,使业务层与数据层解耦。
  • JDBC:是 Java 操作数据库的技术,为 DAO 提供具体的数据库访问能力。

两者结合形成了 Java EE 应用中经典的数据访问层架构:上层通过 DAO 接口定义业务操作,下层通过 JDBC 实现物理数据访问。这种分离使得代码更易维护、测试和扩展。

相关文章:

  • DDI核心网络服务是什么意思?有什么用?
  • 模板初阶【C++】
  • drop tablespace XXX including contents and datafiles删除表空间后,磁盘空间不释放
  • LlamaIndex
  • 46页 @《人工智能生命体 新启点》中國龍 原创连载
  • 【209. 长度最小的子数组】
  • DL00988-稀疏增强数据transformer船舶AIS轨迹预测含完整数据集
  • 开源免费抓包工具:ProxyPin 的详细使用
  • [TCG] 01.QEMU TCG 概览
  • Oracle BUFFER CACHE内存不足的优化思路
  • 多线程(七)
  • BigFoot (DBM) Deadly Boss Mods
  • export和import的书写方式
  • 计算机操作系统(十)调度的概念与层次,进程调度的时机与进程的调度方式
  • 基于STM32的骑行语音播报系统
  • 3.2.3
  • 从加密到信任|密码重塑车路云一体化安全生态
  • 【VSCode】安装与 ssh 免密登录
  • 企业网站架构部署与优化-Nginx核心功能
  • Linux 内核探秘:从零构建 GPIO 设备驱动程序实战指南
  • 佛山java web网站开发/跟我学seo从入门到精通
  • 长沙市住房和城乡建设委员会网站/站长工具的使用seo综合查询运营
  • 灵山网站建设/营销策划书
  • 刷题网站建设/百度推广一级代理商名单
  • 现在装宽带要多少钱/搜索引擎优化的英文缩写是什么
  • 自己免费做网站(二)/厦门搜索引擎优化