1. 概述
选用HSQLDB(http://www.hsqldb.org/
) 因为:
- 支持嵌套查询在内的绝大部分SQL标准;
- 支持Indentity自动生成主键;
- 支持分页:SELECT TOP 5 FROM .., SELECT LIMIT 0 10 FROM ...;
- 嵌入式打开,不用启动数据库实例,方便测试和演示;
- 数据库文件为直接的sql script文件便于管理。
2. 3.5种打开方式
- 传统Server方式打开
双击server.bat 启动,JDBC URL为
数据库名可以在server.bat中设定,"%JAVA_HOME%/bin/java" -classpath hsqldb.jar org.hsqldb.Server -database.0 bookstore -dbname.0 bookstore
按照命令行参数 -database.0 bookstore,将执行同名的bookstore.script初始化数据库, 如有多个数据库,则继续写命令行参数-database.1,-dbname.1
端口号在server.properties中设定
- 嵌入式In-Process打开
In-Process方式不用启动Server,直接设定JDBC URL即可,非常方便。但有一个缺点是只能在Java进程内共享信息,如果另外打开一个管理器,是没办法看到In-Process时的状态
jdbc:hsqldb:file:C:\springside2\examples\helloworld\resources\hsqldb\bookstore
其中路径是script文件不带后缀名的全路径,可以绝对路径,也可以是打开应用的相对路径。
- 另外有一种读取jar/classpath中的script文件的In-Process方式,方便发布war时不知道具体路径的情况。不过这种方式是只读不存盘的,利用来单元测试也不错。下面的设置将读取classpath根目录下的bookstore.script
jdbc:hsqldb:res:/hsqldb/bookstore
- Memory方式打开
与In-Process方式最大区别是不能读取Script文件进行初始化。
3. SpringSide 2.0 中的应用
为了方便起见,SpringSide2.0在运行时使用了HSQLDB InProcess 读取Classpath 中Script文件的方式,jdbc url为
jdbc:hsqldb:res:/hsqldb/helloworld
这种方式不用启动数据库,能直接读取classpath中的文件,而不用头痛文件部署后的绝对路径。 而且只读的方式,只要重启Tomcat就能把数据还原。
而在管理数据结构时,可采用In-Process File的方式,在manager.bat里用jdbc url为
jdbc:hsqldb:file:C:\springside2\examples\helloworld\resources\hsqldb\helloworld
script 文件放在example 如helloworld的resource 根目录, 而manager.bat 放在components/embeddb/hsqldb/bin 中,详见团队操作手册。