天天看點

在插件裡應用hsqldb和hibernate

最近計劃用插件化的hibernate和嵌入式資料庫來完成一些功能,目前使用的資料庫是HsqlDB和Derby。

hibernate獨立一個插件出來,mapping資訊在本插件内維護,資料庫的cfg資訊則由資料庫插件維護。

要解決的事情很多,比如hibernate的在插件裡的尋址問題和資料庫的配置問題。

剛剛開始這些工作,寫一些心得體會。

先說HsqlDB在插件裡的配置方法:

需要一個hsqldb包,我使用的版本是hsqldb-1.8.0.1.jar,把該jar包放置在插件的lib檔案夾下,然後在Manifest.MF檔案->Runtime->ClassPath處導入,之後Exported Packages處暴露出org.hsqldb(這是為了能讓引用本插件的插件能夠找到資料庫驅動)

我們可以看看hsqldb的說明文檔,可以得知org.hsqldb.Server是資料庫的啟動位置,它包含一個main方法,如下:

在插件裡應用hsqldb和hibernate
在插件裡應用hsqldb和hibernate

View Code

我們可以為它提供各種選項,比如-port -database.? -dbname.?等

我們可以建立一個服務類,提供出start和stop方法,在start方法中調用Server.main(XX)即可。

這樣就配置好了hsqlDB

再來是hibernate配置,相對要複雜一點。

需要的包可以參考上一篇文章,把這些jar包放入lib檔案夾内,導入它們。

提供一個繼承自org.hibernate.cfg.Configuration的MyConfiguration

重寫以下方法(測試用代碼,僅供參考):

這樣我們的.hbm.xml和.cfg.xml檔案就可以放置在插件的任意位置了。

于是就完成了對hibernate的配置。

下一步的工作是,把.cfg.xml中資料庫的配置部分轉移到資料庫插件去,實作随時替換資料庫。