首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JDBC 事務管理實戰:基於 Apache Derby 內嵌資料庫的完整代碼範例與原理解析

     編輯:Java 綜合教學

JDBC 事務管理實戰:基於 Apache Derby 內嵌資料庫的完整代碼範例與原理解析

本文提供一個基於 JDK 內建 Apache Derby 內嵌資料庫的完整 JDBC 事務操作範例,涵蓋連線建立、關閉自動提交、增刪改查、提交/回滾、資源釋放等核心步驟。

核心代碼片段

// 關鍵步驟:關閉自動提交,開啟手動事務控制
conn.setAutoCommit(false);

try {
    // 執行插入操作
    psInsert.executeUpdate();
    // 顯式提交
    conn.commit();

    // 模擬刪除後回滾
    psDelete.executeUpdate();
    conn.rollback(); // 刪除操作被撤銷

    // 更新操作
    psUpdate.executeUpdate();
    conn.commit();
} catch (SQLException e) {
    conn.rollback(); // 異常時回滾
    e.printStackTrace();
} finally {
    // 釋放所有資源
    closeResources();
}

事務控制關鍵點

  1. 關閉自動提交:conn.setAutoCommit(false),預設為 true,每條 SQL 即時提交。
  2. 提交事務:conn.commit(),將當前事務內所有操作持久化。
  3. 回滾事務:conn.rollback(),撤銷當前事務內未提交的操作,常用於 catch 區塊或業務邏輯失敗時。
  4. 保存點:進階場景可使用 Savepoint 實現部分回滾。

資源管理最佳實踐

  • 使用 ArrayList 收集所有 Statement/PreparedStatement/ResultSet,統一在 finally 中關閉。
  • 關閉順序:ResultSet → Statement → Connection。
  • Derby 關閉:DriverManager.getConnection("jdbc:derby:;shutdown=true") 會拋出特定異常(SQLState XJ015),屬正常關閉信號。

實戰建議

  • 生產環境建議使用連線池(HikariCP、Druid)管理連線,而非直接創建。
  • 事務邊界應在 Service 層控制,DAO 僅負責單條 SQL 執行。
  • Spring @Transactional 註解可聲明式管理事務,減少樣板代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved