最近计划用插件化的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方法,如下:

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中数据库的配置部分转移到数据库插件去,实现随时替换数据库。