Login  |  繁體中文
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
Previous Issue

輕巧的資料庫 Hypersonic SQL

Java Opensources for Web Development Part I:Chapter 2 Java Opensource Database
Lession 8 : 輕巧的資料庫 Hypersonic SQL

◎ 前言

在第一章的部份,我針對了幾個應用在 JavaEE 比較常用的工具類軟體先做了介紹,讓我們繼續了解,當我們在一個完整的企業端應用,往往除了應用程式之外,還需要利用資料庫來配合。關於商業型的關聯資料 庫有很多,如著名的 Oracle、DB2、Sybase、MS SQL Server 等等,也有 Opensource 為代表的 MySQL。然而,在 Java 的領域中,可以使用 JDBC 連結各式的資料庫,但是,有以純 Java 撰寫出來的資料庫嗎、或是管理介面、以及聯結的方式嗎? 答案當然是有的,所以我會針對常見的 Java Opensources Database 以及相關工具來做介紹。

◎ Hypersonic SQL 介紹

如果常在學習 Java Opensources 的人,對於 Hypersonic SQL 應該不會感到陌生,因為很多系統會把 Hypersonic SQL 取代微軟的 Access 作為示範性的資料庫來展示相關功能。他的官方網站是 https://www.hsqldb.org/ ,相關的使用手冊可以參考 https://hsqldb.org/doc/guide/index.html

主要來說,當你下載了 hsqldb 的壓縮檔,裡面已經包含了:

  • HSQLDB 的關聯式資料庫
  • HSQLDB 的 JDBC 驅動程式
  • 資料庫的管理介面
  • 資料庫的查詢介面
  • 命令列式的 SQL 指令工具
將 hsqldb.jar 設定到相關的 Classpath 之後,你就可以使用 java –cp hsqldb.jar org.hsqldb.util.DatabaseManager 來建立相關的資料庫。

因為 Hsqldb 的存取需要大量的記憶體空間才能運作,當資料量過大的時候,就非常不建議採用 HsqlDB 來處理,所以我就不介紹將 hsqldb 運用在多人存取的 Server 模式,通常我們會設計為單機版的檔案型資料庫運用。

  • SettingName : Mytest
  • Type : HSQL Database Engine Standalone
  • Driver : org.hsqldb.jdbcDriver
  • URL : jdbc:hsqldb:file:mytestdb
  • User : sa
  • Password :
當我們連結進去之後,就可以看到該目錄下面已經建立了相關的 properties、lck 以及 log 等檔案,如果有資料的時候,便會出現 .data 及 .script 等檔案。

另外在 Database Manager 之中有一個 Test Script

-->>>TEST<<<-- ;
--#1000;
DROP TABLE Test IF EXISTS;
CREATE TABLE Test(
Id INTEGER PRIMARY KEY,
FirstName VARCHAR(20),
Name VARCHAR(50),
ZIP INTEGER) ;
INSERT INTO Test VALUES(#,'Julia','Peterson-Clancy',#) ;
UPDATE Test SET Name='Hans' WHERE Id=# ;
SELECT * FROM Test WHERE Id=# ;
DELETE FROM Test WHERE Id=# ;
DROP TABLE Test IF EXISTS;

這是建立資料庫,插入 1000 筆資料,到修改刪除以及卸除資料庫的一個測試,我們可以看到,相關的設計方式就是參照標準的 SQL92 (1.8 的版本已經支援到 SQL99 , 2003 ) 的設計,我們無需另外學習新的語法就可以操控該資料庫了。

在程式中,我們就利用 Class.forName(‘org.hsqldb.jdbcDriver”); 設計相關的 JDBC Driver , 另外採用 Connection conn = DriverManager.getConnection(“jdbc:hsqldb:file:mytestdb”) 的 URL 來建立相關聯結。

未來在這章會談到有關 Connection Pooling 的機制。我們再來研究該如何解決資料庫連線最優化的方式。




OSSF Newsletter : 第 66 期 OpenVanilla

Category: Tech Column