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

基于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 实现物理数据访问。这种分离使得代码更易维护、测试和扩展。

http://www.xdnf.cn/news/7976.html

相关文章:

  • Python输出与输入
  • windows服务器部署jenkins工具(二)
  • 在linux部署定时执行Kettle任务
  • 领麦微红外测温传感器:即热式饮水机测温应用
  • I.MX6U Mini开发板通过GPIO口测试光敏传感器
  • 无人机电子防抖技术要点概述!
  • 无人机集成毫米波雷达与双目视觉的融合感知系统深度解析
  • 全碳化硅功率模块开关瞬态特性及损耗研究
  • Java学习教程(附电子书资料50+册)
  • 多模态大模型
  • 将YOLO训练进程放至后台的方法-nohup
  • Oracle BUFFER CACHE内存不足的优化思路
  • 【信息系统项目管理师】第13章:项目资源管理 - 38个经典题目及详解
  • SEO关键词优化与长尾词布局
  • Powershell及命令行文章合集(不定期更新)
  • [Docker排查] 镜像拉取/容器启动/网络不通?Docker常见错误与解决方案
  • ERP 与 WMS 对接深度解析:双视角下的业务与技术协同
  • Linux系统之----文件及缓冲区
  • 实验4 插入数据
  • ETL工具部署的5个注意事项
  • 风车聊天室nodejs环境即可无需数据库
  • 适合初学者的 Blender和怎么下载 Blender格式模型
  • 项目优先级不清,如何合理分配资源?
  • Baumer工业相机堡盟工业相机的工业视觉如何进行药板缺陷检测
  • LeetCode数组-移除元素
  • 力扣热题——零数组变换 ||
  • C++(26): 标准库 <iterator>
  • 使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体(实战指南)
  • 百度地图的地铁图API所有城市的城市名和citycode的对照关系列表
  • 城市停车场光伏-储能-充电系统耦合机制与效益分析