HSqlDB认识及使用

前段时间使用阿里云呼叫中心,给的demo中使用了hsqldb,对于数据的存储和获取很是方便,不用本地做任何的改动。查阅资料,看到了原作者写下的很好的一片文章,特整理过来以供自己熟悉和理解使用。
原文地址:
https://www.cnblogs.com/zdxster/p/5345194.html

1、简介

hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不凡考虑一下使用它,相对其他数据库来说,其体积小,才563kb。仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动, 还有其他用户界面操作等内容。在Java开源世界里,hsql是极为受欢迎的(就Java本身来说),JBoss应用程序服务器默认也提供了这个数据库引 擎。由于其体积小的原因,又是纯Java设计,又支持SQL99,SQL2003大部分的标准,所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql
http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download

2、四种使用模式介绍

一个db 数据库会包含如下文件:

  1. mydb.properties
  2. mydb.script
  3. mydb.log
  4. mydb.data
  5. mydb.backup
  6. mydb.lck
  • mydb.properties 文件包含关于数据库的一般设置.
  • mydb.script 文件包含表和其它数据库,插入没有缓存表的数据.
  • mydb.log 文件包含当前数据库的变更.
  • mydb.data 文件包含缓存表的数据
  • mydb.backup 文件是最近持久化状态的表的数据文件的压缩备份文件
  • 当操作db 数据库的时候, mydb.log 用于保存数据的变更. 当正常SHUTDOWN,这个文件将被删除. 否则(不是正常shutdown),这个文件将用于再次启动的时候,重做这些变更.
  • mydb.lck 文件也用于记录打开的数据库的事实, 正常SHUTDOWN,文件也被删除.在一些情况下,mydb.data.old 文件会被创建,并删除以前的.

所有以上这个文件都是必要的,不能被删除.如果数据库没有缓存表,mydb.data 和mydb.backup 文件将不会存在.另外,除了以上文件HSQLDB 数据库可以链接到任何文本文件,比如cvs 文件.

2.1 内存(Memory-Only)模式

所有的数据都将在内存中完成,如果程序退出,则相应的数据也将同时被销毁。不需要额外启动
连接JDBC的实例为:jdbc:hsqldb:mem:dbname

  Connection connection =DriverManager.getConnection("jdbcUriName","username","password");

2.2 进行(In-Process/Standlone)模式

不能通过网络来访问数据库,主要是在一个JVM中使用,那样的话,访问的速度会更加快。此模式从应用程序启动数据库,由于所有的数据都将写到文件中,所以,即使程序退出,数据也不会被销毁不需要额外启动
连接 JDBC 的实例为:jdbc:hsqldb:file:**

jdbc:hsqldb:file:/E:/hsqldb/data/dbname   // windows
jdbc:hsqldb:file:/opt/db/dbname			 // Linux
jdbc:hsqldb:file:dbname					 // 当前项目名下

2.3 服务器(Server)模式

  1. 首先切换到lib文件夹下,运行
     java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0  xdb
    

xdb相当于数据库别名,执行命令后后会在lib目录下生成一个db文件夹,将会在db文件夹下创建一个数据库mydb,别名(用于访问数据库)是xdb,如果存在mydb数据库,将会打开它。

  1. 在lib文件夹目录下运行数据库界面操作工具:
    	java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
    

在Type 选项里选上相应的服务器模式,这里选择HSQL Database Engine Server模式;Driver不用修改;URL修改为jdbc:hsqldb:hsql://localhost/xdb (主要这里xdb就是上面我们设置的别名);user里设置用户名,第一次登录时,设置的是管理员的用户名,password设置密码。然后点击Ok。

  1. 第一次运行数据库引擎,创建数据库完,在db文件夹下便会生成properties,script等文件。
package com.util;

import java.sql.*;

public class DBWork {
	public static void main(String args[]){
	   try{
	    Class.forName("org.hsqldb.jdbcDriver");
	    Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", "");
	    System.out.println("conn = " + conn);
	   
	   } catch(Exception e){
	    e.printStackTrace();
	   }
	}
}

spring+hibernate中,applicationContext.xml中配置:

<bean
class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName">
   <value>org.hsqldb.jdbcDriver</value>
</property>
<property name="url">
   <value>jdbc:hsqldb:hsql://localhost/xdb</value>
</property>
<property name="username">
   <value>sa</value>
</property>
<property name="password">
   <value/>
</property>
</bean>
<bean
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" id="sessionFactory">
<property name="dataSource">
   <ref local="dataSource"/>
</property>
<property name="mappingResources">
   <list>
    <value>com/hibernate/UserInfo.hbm.xml</value>
   </list>
</property>
<property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
   </props>
</property>
</bean>
  1. 创建bat文件快速运行。
    首先在 E:\hsqldbTest 目录下建立两个子目录,data和lib目录,data用来存放数据,lib用来管理jar包。将解压之后的hsqldb中的lib目录下的 hsqldb.jar 文件拷贝到 E:\hsqldbTest\lib 目录下。
    在hsqldbTest目录下创建 runServer.bat 文件,其内容为:(winow 下命令格式)
cd ./data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server

保存 runServer.bat 文件,并双击运行该文件,此时回弹出命令行窗口,如下图,表示已启动 HSQLDB 数据库。

再创建 runManager.bat 文件,用来启动图形界面管理工具,其内容为:

cd ./data
@java -classpath  ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager

在这里插入图片描述
Recent:将会列出最近的数据库配置
Setting Name: 设置名称,这里不需要填写
Type:选择服务器模式(HSQL Database Engine Server)
Driver:驱动名称,不需要修改
URL:JDBC连接,无需修改
User:用户名,根据需要设置
Password:密码,根据需要设置

在这里插入图片描述
另外还可以用 DatabaseManagerSwing 工具启动图形界面。创建 runManagerSwing.bat 文件,内容为

cd ./data
@java -classpath  ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

在这里插入图片描述

  1. 创建定制的数据库
    首先在 E:\hsqldbTest 目录下创建一个 server.properties(本人实验,不用写这个文件也可以) 文件,文件内容为(注:在实际文件中,删除后面的注释内容):
server.port = 9001           #指定端口号为9001
server.database.0 = file:data/mydb  #将在data目录下创建mydb数据库  文件中定义启动的数据库,最多10个  
server.dbname.0 = xdb	#指定数据库名,jdbc连接时就是用此名称
server.silent = true
cd  ./data
@java  -classpath  ../lib/hsqldb.jar org.hsqldb.server.Server -port 9001 -database.0 file:../data/mydb -dbname.0 xdb	

Hsqldb 的主要工具类:

org.hsqldb.util.DatabaseManager 
org.hsqldb.util.DatabaseManagerSwing 
org.hsqldb.util.Transfer 
org.hsqldb.util.QueryTool 
org.hsqldb.util.SqlTool 

2.4 Web服务器模式

WebServer模式和Server运行模式基本一样,只是支持了Http等协议,主要用于防火墙,默认端口是9001。启动Server,
java -cp hsqldb.jar org.hsqldb.WebServer … 剩余的和上面的一致。

  java -cp hsqldb.jar org.hsqldb.WebServer -database.0 testdb  -dbname.0 testdbname

2.5 Servlet服务器模式

Servlet模式可以允许你通过Servlet容器来访问数据库

猜你喜欢

转载自blog.csdn.net/weixin_43050247/article/details/89237081