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

Eclipse 中開發 Apache Derby 應用全周期:從建庫到遷移 DB2 實戰

     編輯:Java 相關知識

工具鏈概覽

工具核心功能
JDT Java 編輯/編譯/調試/部署基礎環境
DB2 Plug-ins for Eclipse Connection Wizard、Database Explorer、SQL Scrapbook、Migration Wizard (Derby→DB2)
IBM Integration Plug-in for Derby Derby Nature、Network Server 啟動、ij 命令行、Sysinfo

開發環境配置關鍵點

  • 項目添加 Apache Derby Nature 自動配置構建路徑
  • 啟動 Derby Network Server (嵌入式模式不支持多工具並發連接)
  • Java Perspective 整合 Database Explorer & DB Output 視圖,避免視角切換

完整開發周期演示:書店庫存管理

1. 創建數據庫與表

-- Connection Wizard 參數
Database: bookstoredb | Host: localhost | Port: 1527
URL: jdbc:derby:net://localhost:1527/bookstoredb;create=true

-- SQL Scrapbook 建表
CREATE TABLE books (
    id INT, title VARCHAR(128), author VARCHAR(128),
    price DECIMAL(6,2), quantity INT, status INT
);

2. 插入測試數據 (ij 腳本優勢:多語句、可控連接 URL)

connect 'jdbc:derby:net://localhost:1527/bookstoredb:user=bookstore;password=aaa;retrieveMessagesFromServerOnGetMessage=true;';
INSERT INTO books VALUES (1, 'East Of Eden', 'John Steinbeck', 7.20, 3, 0);
INSERT INTO books VALUES (2, 'Hard-Boiled Wonderland...', 'Haruki Murakami', 10.50, 9, 0);
disconnect;

3. JDBC 客戶端應用 (Inventory.java)

  • 驅動:com.ibm.db2.jcc.DB2Driver (Network Server 模式需 db2jcc.jar + db2jcc_license_c.jar)
  • 連接 URL 附加 retrieveMessagesFromServerOnGetMessage=true 獲取可讀錯誤信息
  • 文本界面實現庫存查詢與數量更新

4. 服務端邏輯下沉:Java 函數 + 觸發器

-- DerbyFunctions.java (部署到服務端 JVM)
public static int updateQuantity(int id, String title, String author,
                                 int oldQty, int newQty) {
    if (oldQty < HIGH_LIMIT && newQty >= HIGH_LIMIT) sendAlert("High");
    if (oldQty > LOW_LIMIT && newQty <= LOW_LIMIT) sendAlert("Low");
    return (newQty >= HIGH_LIMIT) ? 1 : (newQty <= LOW_LIMIT) ? -1 : 0;
}

-- ij 中創建函數
CREATE FUNCTION updateQuantity(id INT, title VARCHAR(128), author VARCHAR(128),
    oldQty INT, newQty INT) RETURNS INT
PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA
EXTERNAL NAME 'bookstoreapp.serverside.DerbyFunctions.updateQuantity';

-- 創建觸發器自動調用
CREATE TRIGGER updateQtyTrig AFTER UPDATE OF quantity ON books
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW MODE DB2SQL
UPDATE books SET status = updateQuantity(NEW.id, NEW.title, NEW.author,
    OLD.quantity, NEW.quantity) WHERE id = NEW.id;

5. 部署方案對比

配置服務端組件客戶端組件啟動命令
Network Server derby.jar, derbynet.jar, bookstoredb/ (含 functions.jar) db2jcc.jar, db2jcc_license_c.jar, inventory.jar java -cp derby.jar;derbynet.jar org.apache.derby.drda.NetworkServerControl start
Embedded derby.jar, inventory.jar, bookstoredb/ 同上 (驅動換 EmbeddedDriver) java -cp derby.jar;inventory.jar bookstoreapp.clientside.Inventory

關鍵步驟:將 Java 函數打包 JAR,通過 sqlj.install_jar 安裝到數據庫,設置 derby.database.classpath 引用,實現代碼隨庫遷移。

6. 遷移到 DB2 UDB

  1. DB2 CLP 創建同名數據庫
  2. Migration Wizard 自動遷移表/數據 (觸發器/函數需手動補充)
  3. 安裝 JAR:CALL sqlj.install_jar('functions.jar', 'bookstore.jar1', 0)
  4. 重建函數/觸發器 (SQL 語法兼容,直接復用)
  5. 客戶端修改:驅動類、URL、Schema 設置 SET CURRENT SCHEMA = bookstore

總結

Eclipse 工具鏈實現了 Derby 開發全周期覆蓋,Network Server 模式最適合生產部署,遷移 DB2 僅需調整連接層與補充服務端邏輯,業務代碼零修改。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved