嵌入式数据库 HSQLDB 介绍

jopen 13年前
     <h4>一、简介: </h4>    <div id="p_fullcontent" class="detail">     <p><img alt="嵌入式数据库 HSQLDB 介绍" src="https://simg.open-open.com/show/c44ba9edb6d693ba5503937886a18249.png" width="223" height="47" /></p>     <p>Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有 Server模式,进程内模式(In-Process)和内存模式(Memory-Only)三种。运行Hsqldb需要hsqldb.jar包, 它包含了一些组件和程序。每个程序需要不同的命令来运行。</p>    </div> 相对其他数据库来说,其体积小,才563kb。    <br /> 仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。    <br /> 下载地址:http://hsqldb.org/    <br />    <h4>二、使用hsql数据库: </h4> 1、hsql数据库引擎有几种服务器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-On­ly数据库。    <br /> 2、最为常用的Server模式:    <br /> 1)首先却换到lib文件夹下,运行java -cp hsqldb.jar    <br /> org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb    <br /> 执行命令后,将会在db文件夹下创建一个数据库mydb,别名(用于访问数据库)是xdb,如果存在mydb数据库,将会打开它。    <br /> 2)运行数据库界面操作工具:java -cp hsqldb.jar    <br /> org.hsqldb.util.DatabaseManager    <br /> 在Type选项里选上相应的服务器模式,这里选择HSQL    <br /> Database Engine    <br /> Server模式;Driver不用修改;URL修改为jdbc:hsqldb:hsql://localhost/xdb    <br /> (主要这里xdb就是上面我们设置的别名);user里设置用户名,第一次登录时,设置的是管理员的用户名,password设置密码。然后点击Ok。    <br /> 3)第一次运行数据库引擎,创建数据库完毕。好了,你可以打开db文件夹,会发现里面多了几个文件。    <br /> mydb.properties文件:是关于数据库的属性文件。    <br /> mydb.script:hsql主要保存的表(这里按hsql的说法是Memory表,就是最为常用的),里面的格式都是文本格式,可以用文本查看,里    <br /> 面的语­句都是sql语句,熟悉sql语句的话,你也可以手动修改它。每次运行数据库引擎的话都是从这里加载进内存的。    <br /> mydb.lck表示数据库处于打开状态。    <br /> 其他的请参看hsqldb包里的手册。    <br /> 3、WebServer模式和Server运行模式基本一样,只是支持了Http等协议,主要用于防火墙,默认端口是9001。启动Server,java    <br /> -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。    <br /> 4、Servlet模式可以允许你通过Servlet容器来访问数据库,请查看hsqlServlet.java的源代码,和WebServer类似。    <br /> 5、另一个值得思考的模式是Standalone模式:不能通过网络来访问数据库,主要是在一个JVM中使用,那样的话,访问的速度会更加快。虽然文档里    <br /> 面提到­主要是用于开发时使用,但是我们可以假设一下,该方法不需要一个引擎类的东西,而类似于打开文件的方式,返回一个    <br /> Connection对象:    <br /> Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb",    <br /> "sa", "");    <br /> 将会在当前目录找到mydb数据库相关文件,打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎,在需要的时候操作数据。所以那    <br /> 些对数­据库不是特别有要求的,但又需要一个操作数据库的方式的话,可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话,可以    <br /> 使用这种方法。但是不推荐使用该­方法。记得Hibernate里SessionFactory可以使用openSession    <br /> (Connecttion    <br /> c)来获得一个Session对象的,因此,在测试或者实际应用的话都可以这样使用。    <br /> 6、Memory-Only    <br /> 数据库:顾名思义,主要是内存中使用,不用于保存数据。可以用于在内存中交换数据。    <br /> 上面是关于hsqldb的一些基本信息的介绍,可以看到它的一些优势和特性。    <br /> 我们可以把hsqldb内置在web程序中,除考虑Standalone模式外,最好是采用最为常用的Server模式。    <br /> 那么Server模式如何和web程序合理搭配使用呢。    <br /> 可以采用两种方式:    <br /> 1)采用上面提到的方法,运行java -cp hsqldb.jar    <br /> org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb    <br /> 来启动db,通过设置的URL:jdbc:hsqldb:hsql://localhost/xdb    <br /> 以达到在程序中访问hsql数据库的    <br /> (注:设置URL等信息,可以通过hibernate来配置,例如:    <br />    <pre class="brush:shell; toolbar: true; auto-links: false;">hibernate.dialect org.hibernate.dialect.HSQLDialect hibernate.connection.driver_class org.hsqldb.jdbcDriver hibernate.connection.username sa hibernate.connection.password hibernate.connection.url jdbc:hsqldb:hsql://localhost/xdb ) </pre>    <br /> 2)为了省去第一种方法的琐碎,可以在启动web容器的过程中同时启动hsqldb。具体做法如下:编写一个有关hsql的Listener类,扩展 javax­.servlet.ServletContextListener,可以在配置文件中设置dbPath、dbName、 port等等hsqldb的信息,启动h­sqldb。    <br /> 在web.xml中配置    <br />        <br /> com.iplan.portal.framework.web.HsqlListener    <br />          <br /> 这样在启动web容器的时候,同时启动了hsqldb,关闭容器的时候同时也shutdown掉hsqldb。    <br /> 还有一点说明的是:在单体或是结合测试的时候,可以采用Memory-Only    <br /> 数据库,这样可以保证原有数据库中数据的完整性,这也是比较好的一个功能。    <br />    <br />    <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1322487634296" target="_blank">http://www.open-open.com/lib/view/home/1322487634296</a></p>