posts - 18, comments - 15, trackbacks - 0, articles - 0
          轉(zhuǎn)載:http://www.5ai7.net/viewtopic.php?t=5

          一、簡(jiǎn)介:
          hsql數(shù)據(jù)庫(kù)是一款純Java編寫的免費(fèi)數(shù)據(jù)庫(kù),許可是BSD-style的協(xié)議。
          相對(duì)其他數(shù)據(jù)庫(kù)來說,其體積小,才3276605bytes。
          僅一個(gè)hsqldb.jar文件就包括了數(shù)據(jù)庫(kù)引擎,數(shù)據(jù)庫(kù)驅(qū)動(dòng),還有其他用戶界面操作等內(nèi)容。
          最新版本是hsqldb_1_8_0_7 ,下載地址:http://hsqldb.org/

          二、使用hsql數(shù)據(jù)庫(kù):
          1、hsql數(shù)據(jù)庫(kù)引擎有幾種服務(wù)器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-On­ly數(shù)據(jù)庫(kù)。

          2、最為常用的Server模式
          1)首先卻換到lib文件夾下,運(yùn)行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
          執(zhí)行命令后,將會(huì)在db文件夾下創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)mydb,別名(用于訪問數(shù)據(jù)庫(kù))是xdb,如果存在mydb數(shù)據(jù)庫(kù),將會(huì)打開它。
          2)運(yùn)行數(shù)據(jù)庫(kù)界面操作工具:java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
          Type選項(xiàng)里選上相應(yīng)的服務(wù)器模式,這里選擇HSQL Database Engine Server模式;
          Driver不用修改;
          URL修改為jdbc:hsqldb:hsql://localhost/xdb (主要這里xdb就是上面我們?cè)O(shè)置的別名);
          user里設(shè)置用戶名,第一次登錄時(shí),設(shè)置的是管理員的用戶名;
          password設(shè)置密碼。
          然后點(diǎn)擊Ok。
          3)第一次運(yùn)行數(shù)據(jù)庫(kù)引擎,創(chuàng)建數(shù)據(jù)庫(kù)完畢。好了,你可以打開db文件夾,會(huì)發(fā)現(xiàn)里面多了幾個(gè)文件。
          mydb.properties文件:是關(guān)于數(shù)據(jù)庫(kù)的屬性文件。
          mydb.script:hsql主要保存的表(這里按hsql的說法是Memory表,就是最為常用的),里面的格式都是文本格式,可以用文本查看,里面的語(yǔ)­句都是sql語(yǔ)句,熟悉sql語(yǔ)句的話,你也可以手動(dòng)修改它。每次運(yùn)行數(shù)據(jù)庫(kù)引擎的話都是從這里加載進(jìn)內(nèi)存的。
          mydb.lck表示數(shù)據(jù)庫(kù)處于打開狀態(tài)。
          其他的請(qǐng)參看hsqldb包里的手冊(cè)。

          3、WebServer模式Server運(yùn)行模式基本一樣,只是支持了Http等協(xié)議,主要用于防火墻,默認(rèn)端口是9001。啟動(dòng)Server,java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。

          4、Servlet模式可以允許你通過Servlet容器來訪問數(shù)據(jù)庫(kù),請(qǐng)查看hsqlServlet.java的源代碼,和WebServer類似。

          5、另一個(gè)值得思考的模式是Standalone模式:不能通過網(wǎng)絡(luò)來訪問數(shù)據(jù)庫(kù),主要是在一個(gè)JVM中使用,那樣的話,訪問的速度會(huì)更加快。雖然文檔里面提到­主要是用于開發(fā)時(shí)使用,但是我們可以假設(shè)一下,該方法不需要一個(gè)引擎類的東西,而類似于打開文件的方式,返回一個(gè)Connection對(duì)象:
          Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");
          將會(huì)在當(dāng)前目錄找到mydb數(shù)據(jù)庫(kù)相關(guān)文件,打開并返回一個(gè)Connection對(duì)象。該方式有點(diǎn)好處就是可以不使用引擎,在需要的時(shí)候操作數(shù)據(jù)。所以那些對(duì)數(shù)據(jù)庫(kù)不是特別有要求的,但又需要一個(gè)操作數(shù)據(jù)庫(kù)的方式的話,可以使用這種方法。對(duì)于那些不想額外在數(shù)據(jù)庫(kù)引擎花費(fèi)金錢的話,可以使用這種方法。但是不推薦使用該方法。記得Hibernate里SessionFactory可以使用openSession(Connecttion c)來獲得一個(gè)Session對(duì)象的,因此,在測(cè)試或者實(shí)際應(yīng)用的話都可以這樣使用。

          6、Memory-Only 數(shù)據(jù)庫(kù):顧名思義,主要是內(nèi)存中使用,不用于保存數(shù)據(jù)。可以用于在內(nèi)存中交換數(shù)據(jù)。

          上面是關(guān)于hsqldb的一些基本信息的介紹,可以看到它的一些優(yōu)勢(shì)和特性。
          我們可以把hsqldb內(nèi)置在web程序中,除考慮Standalone模式外,最好是采用最為常用的Server模式。
          那么Server模式如何和web程序合理搭配使用呢。
          可以采用兩種方式:
          1)采用上面提到的方法,運(yùn)行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
          來啟動(dòng)db,通過設(shè)置的URL:jdbc:hsqldb:hsql://localhost/xdb 以達(dá)到在程序中訪問hsql數(shù)據(jù)庫(kù)的
          (注:設(shè)置URL等信息,可以通過hibernate來配置,例如:
          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 )
          2)為了省去第一種方法的瑣碎,可以在啟動(dòng)web容器的過程中同時(shí)啟動(dòng)hsqldb。具體做法如下:編寫一個(gè)有關(guān)hsql的Listener類,擴(kuò)展javax­.servlet.ServletContextListener,可以在配置文件中設(shè)置dbPath、dbName、port等等hsqldb的信息,啟動(dòng)h­sqldb。
          在web.xml中配置
          <listener>
          <listener-class>com.iplan.portal.framework.web.HsqlListener</listener-class&shy;>
          </listener>

          這樣在啟動(dòng)web容器的時(shí)候,同時(shí)啟動(dòng)了hsqldb,關(guān)閉容器的時(shí)候同時(shí)也shutdown掉hsqldb。

          還有一點(diǎn)說明的是:在單體或是結(jié)合測(cè)試的時(shí)候,可以采用Memory-Only
          數(shù)據(jù)庫(kù),這樣可以保證原有數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性,這也是比較好的一個(gè)功能。

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 酒泉市| 巴楚县| 醴陵市| 合山市| 青岛市| 澄迈县| 马龙县| 南川市| 英德市| 耒阳市| 黔东| 石渠县| 涟水县| 商都县| 共和县| 罗田县| 正镶白旗| 蓬莱市| 海城市| 南溪县| 卢湾区| 太白县| 霍城县| 阿鲁科尔沁旗| 东安县| 弥勒县| 河西区| 焉耆| 来凤县| 错那县| 福建省| 桐梓县| 类乌齐县| 锦屏县| 靖州| 东方市| 农安县| 盐源县| 溆浦县| 拜城县| 佛山市|