其實在 Play Framework 教學時已經有介紹過如何設定 H2 Data Base 了,所以在 Spring MVC 時設定方式其實很相近。首先還是先去 H2 Data Base 官方網站下載 Library,將 JAR 檔放在 /WebContent/WEB-INF/lib 底下,接著設定 Spring 設定檔 ( 範例為 mercury-servlet.xml ),設定內容如下:
我們在 Spring 設定檔內將要使用的 DataSource 宣告出來並設定各 property,如 driver 設定使用 org.h2.Driver,當然使用其他 Driver 要更改此處。再來 url 為設定連接的資料庫,url 寫法是參照 H2 Cheat Sheet,根據自己需求選擇不同的連接方式。基本上這幾個步驟下來這樣 H2 Data Base 已經可以運作了,不過為了使用上方便,我們可以把 H2 資料庫提供的 Console 介面設定於 web.xml 裡,設定如下:
如上面範例,我們將 H2 Console 介面的 Servlet 宣告在 web.xml 裡,另外在 servlet-mapping 將 H2 Console 的 url 設定為 /console/*,如此一來我們只要連接到 localhost:8080/Mercury/console,就可自動連接到 H2 Console 介面了,如下圖:
不過若有使用 SiteMesh 或類似框架的話,需要注意你的 decrator url-pattern 需排除 /console/* 路徑,因為當你連到 H2 Console 介面時它會偵測你是否有引入 JavaScript,若你有引入 JavaScript 的話它不會顯示 Console 畫面,而是出現警告訊息。
第一次登入之後 DB 才會真正被建立起來,可以看到 DB 如同設定檔被產生在指定的路徑下,如下圖:
另外,Spring MVC 還提供了一個很方便的功能,必須使用到 <jdbc:initialize-database > ,它提供了 DB 初始化時讓你執行指定的 SQL ,首先可以在 Spring 設定檔 ( mercury-servlet.xml ) 裡面設定,如下圖:
把這段設定套用後,指定你要執行的 SQL 檔案,如上面範例中指定 /WEB-INF/db 路徑底下的 setup.sql。如此一來 DB 在初始化時就會執行 setup.sql ,例如我在 setup.sql 裡面加入 Create Table 的動作,每段 SQL 透過分號作為結束,參考內容如下:
如此一來 DB 的建立與設定介紹算是告一段落。最後附上檔案分佈的狀況,如下圖: