| 工具 | 核心功能 |
|---|---|
| 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 |
-- 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
);
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;
com.ibm.db2.jcc.DB2Driver (Network Server 模式需 db2jcc.jar + db2jcc_license_c.jar)retrieveMessagesFromServerOnGetMessage=true 獲取可讀錯誤信息-- 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;
| 配置 | 服務端組件 | 客戶端組件 | 啟動命令 |
|---|---|---|---|
| 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 引用,實現代碼隨庫遷移。
CALL sqlj.install_jar('functions.jar', 'bookstore.jar1', 0)SET CURRENT SCHEMA = bookstoreEclipse 工具鏈實現了 Derby 開發全周期覆蓋,Network Server 模式最適合生產部署,遷移 DB2 僅需調整連接層與補充服務端邏輯,業務代碼零修改。